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

Patricia Arquette
Libérer: 2024-11-10 13:23:03
original
408 Les gens l'ont consulté

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]
Copier après la connexion
  • 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])
Copier après la connexion
  • 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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal