366 votes

Concaténation de deux tableaux NumPy unidimensionnels

J'ai deux tableaux unidimensionnels simples dans l'application NumPy . Je devrais être capable de les concaténer en utilisant numpy.concatenate . Mais j'obtiens cette erreur pour le code ci-dessous :

TypeError : seuls les tableaux de longueur 1 peuvent être convertis en scalaires Python

Code

import numpy
a = numpy.array([1, 2, 3])
b = numpy.array([5, 6])
numpy.concatenate(a, b)

Pourquoi ?

3 votes

Si vous voulez les concaténer (en un seul tableau) le long de un axe, utilisez np.concatenat(..., axis) . Si vous voulez les empiler verticalement, utilisez np.vstack . Si vous voulez les empiler (en plusieurs tableaux) horizontalement, utilisez np.hstack . (Si vous voulez les empiler en profondeur, c'est-à-dire dans la troisième dimension, utilisez np.dstack ). Notez que ces dernières sont similaires à celles de pandas pd.concat

2voto

Pe Dro Points 379

Quelques faits supplémentaires tirés de l'étude numpy docs :

Avec une syntaxe comme numpy.concatenate((a1, a2, ...), axis=0, out=None)

axis = 0 pour une concaténation en ligne axis = 1 pour une concaténation par colonne

>>> a = np.array([[1, 2], [3, 4]])
>>> b = np.array([[5, 6]])

# Appending below last row
>>> np.concatenate((a, b), axis=0)
array([[1, 2],
       [3, 4],
       [5, 6]])

# Appending after last column
>>> np.concatenate((a, b.T), axis=1)    # Notice the transpose
array([[1, 2, 5],
       [3, 4, 6]])

# Flattening the final array
>>> np.concatenate((a, b), axis=None)
array([1, 2, 3, 4, 5, 6])

J'espère que cela vous aidera !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X