Autre forme d'indexation en Python

Oct 08 2020

Je suis un cours de Machine Learning, et dans une revue de la bibliothèque numpy, une méthode d'indexation est utilisée que je n'ai jamais vue auparavant. Nous avons défini a = np.array([[1,2],[3,4],[5,6]]). Deux nouveaux tableaux sont ensuite créés: np.array([a[0,0], a[1,1], a[2,1]]. C'est la manière d'indexation que je connais. La façon d'indexation que je ne sais pas est la suivante: print(a[[0,1,2],[0,1,1]]). Quelqu'un pourrait-il m'aider avec une explication sur cette dernière forme d'indexation?

Réponses

1 Marat Oct 08 2020 at 05:15

Lorsque les ntableaux sont transmis, où nest le nombre de dimensions du tableau, ils sont utilisés comme index pour les dimensions correspondantes. a[[0,1,2],[0,1,1]]est équivalent à[a[0,0], a[1,1], a[2,1]]

Permettez-moi de citer des documents numpy :

... A partir de chaque ligne, un élément spécifique doit être sélectionné. L'index de ligne est juste [0, 1, 2] et l'index de colonne spécifie l'élément à choisir pour la ligne correspondante, ici [0, 1, 0]. En utilisant les deux ensemble, la tâche peut être résolue à l'aide de l'indexation avancée:

x = np.array([[1, 2], [3, 4], [5, 6]])

x[[0, 1, 2], [0, 1, 0]]
array([1, 4, 5])
1 Gabitohh Oct 08 2020 at 05:29

Il appelle l' indexation de tableau d'entiers . Dans votre exemple, vous accédez aux [[0,1,2],[0,1,1]]index d'un tableau 1x3, appelé a. Cela signifie que vous obtenez de a:

[
    the first element of the first array,contained in this 1x3 array,
    the second element of the second array, contained in this big array,
    the second element of the third array, contained in the same array
]

Impression, vous obtiendrez la sortie [1 4 6], car ce sont les éléments dans les positions spécifiées ( (0,0), (1,1), (2,1)). Vous pouvez le visualiser comme un schéma de colonnes et de lignes :

[[rows],[colums]] # vertically speaking

Vous sélectionnez les lignes des éléments souhaités dans le premier sous-tableau et les colonnes dans le second.