Maison > Article > développement back-end > Comment indexer un tableau Numpy par un autre ?
Indexation d'un tableau par un autre dans Numpy
Considérons deux matrices, A et B , où A contient des valeurs arbitraires et B contient des indices d'éléments dans A. La tâche consiste à extraire des éléments de A en fonction des indices spécifiés par B. Cette indexation permet une récupération sélective d'éléments.
Solution utilisant l'indexation avancée :
L'indexation avancée de Numpy permet cette opération en utilisant l'expression :
A[np.arange(A.shape[0])[:,None], B]
Cette approche utilise une combinaison d'indices de ligne et d'indices de colonne récupérés de B pour récupérer des éléments dans A.
Solution utilisant l'indexation linéaire :
Une approche alternative implique l'indexation linéaire :
m, n = A.shape out = np.take(A, B + n*np.arange(m)[:,None])
Ici, m et n représentent les dimensions de A, et les opérations au sein de la fonction np.take() assurent une indexation correcte des éléments basée sur B.
Exemple :
Illustrons ces solutions avec un exemple :
import numpy as np A = np.array([[2, 4, 5, 3], [1, 6, 8, 9], [8, 7, 0, 2]]) B = np.array([[0, 0, 1, 2], [0, 3, 2, 1], [3, 2, 1, 0]]) # Advanced indexing result1 = A[np.arange(A.shape[0])[:,None], B] # Linear indexing m, n = A.shape result2 = np.take(A, B + n*np.arange(m)[:,None]) print("Result using advanced indexing:") print(result1) print("Result using linear indexing:") print(result2)
Sortie :
Result using advanced indexing: [[2 2 4 5] [1 9 8 6] [2 0 7 8]] Result using linear indexing: [[2 2 4 5] [1 9 8 6] [2 0 7 8]]
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!