Maison  >  Article  >  développement back-end  >  Comment indexer un tableau NumPy par un autre : indexation avancée ou indexation linéaire ?

Comment indexer un tableau NumPy par un autre : indexation avancée ou indexation linéaire ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-10 13:23:03413parcourir

How to Index One NumPy Array by Another: Advanced Indexing vs. Linear Indexing?

Indexer un tableau par un autre dans NumPy

En informatique scientifique, la manipulation de tableaux multidimensionnels est une tâche courante. Les capacités d'indexation avancées de NumPy fournissent un outil puissant pour les opérations d'indexation complexes, facilitant l'extraction de données d'un tableau en fonction des valeurs d'index stockées dans un autre tableau.

Considérez une matrice A avec des valeurs arbitraires et une matrice B contenant des indices d'éléments dans A. La tâche consiste à sélectionner des valeurs parmi A pointé par B, ce qui donne une matrice C.

Une approche pour y parvenir consiste à utiliser NumPy. avancé indexing:

C = A[np.arange(A.shape[0])[:, None], B]
  • np.arange(A.shape[0])[:, None]: Crée un tableau d'indices de ligne pour A, chaque colonne représentant le même index de ligne.
  • [:, Aucun] : Étend le tableau en un tableau 2D avec une dimension supplémentaire pour s'aligner avec B.

Cette approche fonctionne efficacement sur de grands tableaux sans avoir besoin de boucles.

L'indexation linéaire fournit une autre méthode pour cette opération :

m, n = A.shape
C = np.take(A, B + n * np.arange(m)[:, None])
  • m, n = A.shape : Stocke les dimensions de A.
  • B n * np.arange(m)[:, None]: Calcule l'index aplati pour chaque élément dans C en fonction des indices dans B et de la ligne number.
  • np.take(A, ...): Extrait les éléments de A en utilisant les indices aplatis.

Les deux l'indexation avancée et l'indexation linéaire offrent des méthodes efficaces pour indexer un tableau par un autre dans NumPy.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn