L'article suivant partagera avec vous un article dans numpy qui implémente un tableau ndarray pour renvoyer un index qui répond à des conditions spécifiques. Il a une bonne valeur de référence et j'espère qu'il sera utile à tout le monde. Jetons un coup d'oeil ensemble
Dans le type ndarray de numpy, il ne semble pas y avoir de méthode pour renvoyer directement un index spécifique, j'ai seulement trouvé la fonction Where, mais la fonction Where est très utile pour trouver l'index correspondant. à une valeur spécifique. Pour renvoyer un index de valeurs dans une certaine plage, ce n'est pas très efficace, du moins je ne comprends pas comment le faire. Parlons d’abord de l’utilisation de la fonction Where.
(1) Scénarios d'utilisation de la fonction Where :
Par exemple, maintenant j'ai généré un tableau :
import numpy as np arr=np.array([1,1,1,134,45,3,46,45,65,3,23424,234,12,12,3,546,1,2])
Maintenant, arr est un tableau de type ndarray contenant 18 éléments. Appelons-le tableau plus tard. Si je souhaite renvoyer la position d'index correspondant à tous les éléments du tableau avec une valeur de 3, cela peut être facilement réalisé via la fonction Where.
print np.where(arr==3)
Il renverra un tuple contenant toutes les positions d'index correspondant à la valeur 3, comme indiqué ci-dessous :
Vous pouvez voir que la valeur de l'élément correspondant aux index 5, 9 et 14 est 3. De cette façon, vous pouvez facilement atteindre votre objectif. Mais cela ne fonctionnera pas pour les index dans une certaine plage de modifications. La méthode suivante est un compromis que j'ai trouvé. Elle est relativement stupide, mais le maître peut la clarifier.
(2) Résoudre la recherche d'indice de valeur dans une certaine plage via un tableau auxiliaire
Nous construisons un tableau qui identifie l'indice d'élément , Utilisez-le ensuite pour afficher l'index correspondant à l'élément qui remplit les conditions. C'est toujours le tableau à l'instant, si je veux renvoyer l'index de la valeur de l'élément entre 3 et 100. Je peux générer un tableau de la même taille que arr, puis le filtrer d'abord une fois pour trouver le tableau correspondant à l'indice de l'élément supérieur à 3, puis le filtrer à nouveau et enfin obtenir le résultat souhaité. Le code est le suivant :
b=np.arange(len(arr))#生成和arr相同长度的数组
c=b[arr>3]#c存放的就是arr中大于3的元素对应的索引 #最后通过遍历c数组,选择3到100之间的值打印出来 for i in range(len(c)): if arr[c[i]]<100: print c[i],
Jetons un coup d'œil à l'effet de l'exécution :
Vous pouvez voir que le programme imprime les valeurs d'index correspondant à tous les éléments entre 3 et 100. Si vous souhaitez obtenir la valeur de l'index et l'élément correspondant en même temps, remplacez simplement "print c[i]" ci-dessus par "print c[i],arr[c[i]]".
Bien entendu, cette méthode convient également pour sélectionner l'index correspondant à une valeur spécifique. Par exemple, si je souhaite retrouver toutes les positions correspondant à 3, je peux utiliser print b[arr==3] pour. imprimer toutes les valeurs qui sont 3. L'index correspondant à l'élément. En fait, quelle que soit la manière dont vous procédez, vous utilisez un tableau pour effectuer des opérations relationnelles afin de générer un tableau booléen, puis vous affichez les zones qui sont vraies dans le tableau.
Bien sûr, vous pouvez également filtrer deux fois pour filtrer les tableaux d'index correspondant aux éléments supérieurs à 3 et aux éléments inférieurs à 100, puis effectuer un traitement d'intersection sur les deux tableaux. Il existe une fonction intersect1d dans numpy qui. peut faire cette opération, mais c'est toujours gênant. Pour le moment, je ne peux penser qu’à ces méthodes. Je ne sais pas si un expert a une meilleure méthode. Tout le monde est invité à la partager.
Recommandations associées :
Recommandations associées :
Comment afficher les attributs du tableau numpy dans la bibliothèque python3
Comment convertir numpy et tableau en python
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!