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?
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.
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]])