web-dev-qa-db-fra.com

Concaténation de vecteurs de colonnes à l'aide de tableaux numpy

Je voudrais concaténer des vecteurs 'colonne' en utilisant des tableaux numpy mais parce que numpy voit tous les tableaux comme vecteurs de ligne par défaut, np.hstack et np.concatenate sur n'importe quel axe n'aide pas (et np.transpose comme prévu).

a = np.array((0, 1))
b = np.array((2, 1))
c = np.array((-1, -1))

np.hstack((a, b, c))
# array([ 0,  1,  2,  1, -1, -1])  ## Noooooo
np.reshape(np.hstack((a, b, c)), (2, 3))
# array([[ 0,  1,  2], [ 1, -1, -1]]) ## Reshaping won't help

Une possibilité (mais trop lourde) est

np.hstack((a[:, np.newaxis], b[:, np.newaxis], c[:, np.newaxis]))
# array([[ 0,  2, -1], [ 1,  1, -1]]) ##

Y a-t-il de meilleures façons?

21
green diod

Je pense que numpy.column_stack devrait faire ce que vous voulez. Exemple:

>>> a = np.array((0, 1))
>>> b = np.array((2, 1))
>>> c = np.array((-1, -1))
>>> numpy.column_stack((a,b,c))
array([[ 0,  2, -1],
       [ 1,  1, -1]])

Il est essentiellement égal à

>>> numpy.vstack((a,b,c)).T

bien que. Comme il est dit dans la documentation.

48
abudis

J'ai essayé ce qui suit. J'espère que c'est assez bon pour ce que vous faites?

>>> np.vstack((a,b,c))
array([[ 0,  1],
       [ 2,  1],
       [-1, -1]])
>>> np.vstack((a,b,c)).T
array([[ 0,  2, -1],
       [ 1,  1, -1]])
3
Pavan Yalamanchili