Maison > développement back-end > Tutoriel Python > Comment trouver efficacement les valeurs correspondant aux indices de ligne dans un tableau NumPy ?

Comment trouver efficacement les valeurs correspondant aux indices de ligne dans un tableau NumPy ?

Barbara Streisand
Libérer: 2024-12-15 18:06:12
original
653 Les gens l'ont consulté

How to Efficiently Find Row Indices Matching Values in a NumPy Array?

Trouver les index de lignes de diverses valeurs dans un tableau Numpy

1. Comprendre le problème

Étant donné un tableau X et un tableau searched_values, la tâche consiste à trouver les indices des lignes de X qui correspondent aux lignes correspondantes dans searched_values.

2. Approche utilisant la diffusion NumPy

np.where((X==searched_values[:,None]).all(-1))[1]
Copier après la connexion

3. Approche efficace en mémoire utilisant np.ravel_multi_index et np.in1d

dims = X.max(0)+1
out = np.where(np.in1d(np.ravel_multi_index(X.T,dims),\
                    np.ravel_multi_index(searched_values.T,dims)))[0]
Copier après la connexion

4. Comprendre np.ravel_multi_index

np.ravel_multi_index convertit un tableau 2D d'indices à n dimensions en équivalents d'index linéaires. Par exemple, étant donné X et dims, il calculerait :

np.ravel_multi_index(X.T,dims)
Copier après la connexion

Résultant en [30, 66, 61, 24, 41], où chaque nombre représente l'équivalent d'index linéaire de la ligne correspondante dans X.

5. Choisir des dimensions pour des indices linéaires uniques

Lors de la sélection des dimensions pour np.ravel_multi_index afin de générer des indices linéaires uniques, tenez compte des éléments suivants :

  • Chaque colonne du tableau d'entrée (X) représente un axe de la grille à laquelle est mappée.
  • Pour garantir des indices linéaires uniques, l'étirement maximal de chaque axe doit être pris en compte, qui est la valeur maximale dans chaque colonne plus 1.

Pour le X donné :

dims = X.max(0)+1 # [10, 7]
Copier après la connexion

Cela créerait une grille avec au moins les dimensions spécifiées, garantissant des indices linéaires uniques.

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