Maison > développement back-end > Tutoriel Python > Comment trouver efficacement des index de lignes de valeurs multiples dans des tableaux NumPy ?

Comment trouver efficacement des index de lignes de valeurs multiples dans des tableaux NumPy ?

Linda Hamilton
Libérer: 2024-12-03 07:24:13
original
814 Les gens l'ont consulté

How to Efficiently Find Row Indexes of Multiple Values in NumPy Arrays?

Recherche d'index de lignes de valeurs multiples dans des tableaux NumPy

Étant donné un tableau X et un ensemble de lignes cibles searched_values, la tâche consiste à récupérer les index de lignes correspondants. Ce problème peut être résolu efficacement à l'aide de diverses fonctions NumPy.

Approche 1 : Diffusion

Une approche simple utilisant la diffusion :

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

Approche 2 : Conversion efficace en mémoire

Pour une mémoire efficace, convertissez chaque ligne en un index linéaire unique et utilisez 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

Approche 3 : Recherche efficace en mémoire

Une autre solution efficace en mémoire utilisant np.searchsorted :

dims = X.max(0)+1
X1D = np.ravel_multi_index(X.T,dims)
searched_valuesID = np.ravel_multi_index(searched_values.T,dims)
sidx = X1D.argsort()
out = sidx[np.searchsorted(X1D,searched_valuesID,sorter=sidx)]
Copier après la connexion

Remarque : Cette approche suppose que chaque ligne de searched_values ​​​​a une correspondance dans X.

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