2
votes

Quelle est la différence entre numpy.array ([]) et numpy.array ([[]])?

Pourquoi est-ce que je ne peux pas obtenir la transposition de l'alpha alors que je peux l'obtenir pour la version bêta? À quoi servent les [] supplémentaires?

alpha = np.array([1,2,3,4])
alpha.shape
alpha.T.shape

beta = np.array([[1,2,3,4]])
beta.shape
beta.T.shape


1 commentaires

Le [] ajoute une dimension. Transpose ne le fait pas.


5 Réponses :


1
votes

alpha est un tableau 1D, la transposition est elle-même.

beta est un tableau 2D, vous pouvez donc transformer (1, n) à (n,1).

Pour faire de même avec alpha , vous devez ajouter une dimension, vous n'avez pas besoin pour le transposer:

alpha[:, None]


0 commentaires

1
votes

alpha est un tableau 1D avec la forme (4,). La transposition est à nouveau simplement alpha , c'est-à-dire alpha == alpha.T .

beta est un tableau 2D de forme (1,4). Il s'agit d'une seule ligne, mais elle a deux dimensions. Sa transposition ressemble à une seule colonne de forme (4,1).


0 commentaires


2
votes

La deuxième paire de crochets indique qu'il s'agit d'un tableau 2D, donc avec tel et tableau le tableau transposé est différent du premier tableau (puisque la transposition change les 2 dimensions). Cependant, si le tableau est seulement 1D, la transposition ne change rien et le tableau résultant est égal au tableau de départ.


0 commentaires

1
votes

Quand je suis arrivé dans le monde des langages de programmation, étant venu du "côté mathématique de l'entreprise", cela m'a également semblé étrange. Après y avoir réfléchi, j'ai réalisé que du point de vue de la programmation, ils sont différents. Jetez un œil à la liste suivante:

c = [ [ 100, 200, 300, 400, 500] ]

Ceci est une structure 1D. Il en est ainsi, car pour récupérer les valeurs 1, 2, 3, 4 et 5, il vous suffit d'attribuer une valeur d'adresse. 3 serait renvoyé si vous exécutiez la commande a [2] par exemple.

Jetez maintenant un œil à cette liste:

b = [[ 1,  2,  3,  4,  5],
     [11, 22, 33, 44, 55]]

Pour récupérer le 11 par exemple, vous auriez besoin de deux numéros de position, 1 parce que 11 est situé dans la deuxième liste et 0 parce que dans la deuxième liste, il est situé en première position. En d'autres termes, b [1,0] vous rend 11.

Maintenant vient la partie astuce. Regardez cette troisième liste:

a = [1,2,3,4,5]

Si vous regardez attentivement chaque numéro nécessite 2 numéros de position pour être repris de la liste. 300 par exemple nécessite 0 car il se trouve dans la première (et seule) liste et 2 car c'est le troisième élément de la première liste. c [0,2] vous renvoie 300.

Cette liste peut être transposée car elle a deux dimensions et l'opération de transposition est quelque chose qui change les arguments de position. Donc c.T vous donnerait une liste dont la forme serait [5,1], puisque c a une forme [1,5].

Revenez à la liste a. Là, vous avez une liste avec un seul numéro de position. Cette liste a uniquement la forme [5], donc il n'y a pas de second argument de position pour l'opération de transposition avec laquelle travailler. Par conséquent, il reste [5] et si vous essayez aT vous obtenez un.

Compris?

Meilleures salutations,

Gustavo,


0 commentaires