1
votes

Problème lors de l'utilisation de np.append avec un tableau 2D

Donc, j'essaie d'ajouter 2 tableaux np ensemble mais cela me donne cette erreur ValueError: tous les tableaux d'entrée doivent avoir le même nombre de dimensions, mais le tableau à l'index 0 a 2 dimension (s) et le le tableau à l'index 1 a 1 dimension (s) Je sais que cela signifie que la forme du tableau n'est pas la même mais je ne comprends pas pourquoi et comment le réparer.

arr1 = np.array([
 [10.24217065  5.63381577]
 [ 2.71521988 -3.33068004]
 [-3.43022486 16.40921457]
 [ 1.4461307  12.59851726]
 [12.34829023 29.67531647] 
 [16.65382971  9.8915765 ]])

arr2 = np.array([4.62643996 5.14587112])

arr3 = np.append(arr1,arr2,axis=0)


3 commentaires

np.vstack ((arr1, arr2))


Il devrait être évident pour vous que arr1 est 2d avec forme (6,2), et arr2 est 1d avec forme (2,). Sinon, vous devez lire quelques notions de base sur numpy .


np.append avec le paramètre axis utilise simplement np.concatenate ([arg1, args2], axis = 0) . Concaténer est pointilleux quant au nombre de dimensions et à la correction des formes. Je vous recommande de rester à l'écart de np.append et d'en apprendre suffisamment sur les dimensions pour utiliser correctement np.concatenate .


4 Réponses :


1
votes

Donnez-leur simplement la même dimension:

arr3 = np.append(arr1, [arr2], axis=0)


0 commentaires

1
votes

arr2 n'a qu'une seule dimension, puisque sa forme est (2,) . arr1 par contre a deux dimensions, puisque sa forme est (6, 2) . Celles-ci ne sont pas compatibles pour np.append , comme il est dit.

Vous pouvez faire en sorte que arr2 ait le nombre de dimensions requis de plusieurs manières. L'un d'eux est le remodelage:

arr3 = np.append(arr1, arr2.reshape(1, 2), axis=0)

À ce stade, les tableaux ont la forme (6, 2) et (1, 2) , que np.append sait gérer. La sortie aura la forme (7, 2) .


0 commentaires

1
votes

Le message d'erreur vous indique exactement quel est le problème. Le premier tableau a deux dimensions et le second tableau a une dimension. Une autre paire de [] dans le deuxième tableau fera le travail.

arr2 = np.array([[4.62643996 5.14587112]])


0 commentaires

0
votes
arr3 = np.append(arr1, arr2[np.newaxis, :])

0 commentaires