/ / Erreur d'empilage / de concaténation de tableaux en python - python, tableaux, numpy, concaténation

Erreur d'empilage / concaténation de tableaux en python - python, tableaux, numpy, concaténation

J'essaie de concaténer deux tableaux: a et b, où

a.shape
(1460,10)
b.shape
(1460,)

J'ai essayé d'utiliser hstack et concaténer en tant que:

np.hstack((a,b))
c=np.concatenate(a,b,0)

Je suis coincé avec l'erreur

 ValueError: all the input arrays must have same number of dimensions

Veuillez me guider pour la concaténation et la génération du tableau c de dimensions 1460 x 11.

Réponses:

1 pour la réponse № 1

Essayer

b = np.expand_dims( b,axis=1 )

puis

np.hstack((a,b))

ou

np.concatenate( (a,b) , axis=1)

fonctionnera correctement.


1 pour la réponse № 2

np.c_[a, b] concatène le long du dernier axe. Par les docs,

... les tableaux seront empilés le long de leur dernier axe après mise à niveau à au moins 2-D avec 1 "s post-suspendu à la forme

Depuis b a la forme (1460,) sa forme est améliorée pour (1460, 1) avant la concaténation le long du dernier axe.


In [26]: c = np.c_[a,b]

In [27]: c.shape
Out[27]: (1460, 11)

1 pour la réponse № 3

L'opération la plus basique qui fonctionne est:

np.concatenate((a,b[:,None]),axis=1)

le [:,None] peu tourne b dans une (1060,1) tableau. Les premières dimensions des deux tableaux correspondent, et vous pouvez facilement concaténer le deuxième.

Il y a plusieurs façons d’ajouter la 2e dimension à b, tel que reshape et expanddims. hstack les usages atleast_1d ce qui n'aide pas dans ce cas. atleast_2d ajoute le None du mauvais côté. Je préconise fortement l'apprentissage de la [:,None] syntaxe.

Une fois que les tableaux sont tous les deux en 2D et correspondent aux dimensions correctes, la concaténation est facile.