J'utilise souvent numpy de python pour formater les journaux de texte, mais à ce moment-là, je découvre souvent sur quoi j'ai trébuché (et si je le résolvais une fois)? Mais je veux corriger le point que je pense que ça va ...), je vais le laisser comme un mémorandum sur la façon d'utiliser la valeur de retour de np.where, ce qui est difficile à sortir même si je le vérifie à ce moment-là. Veuillez pardonner que le contenu est bon marché ...
En premier lieu, la valeur de retour de np.where peut obtenir les informations d'index. Voyons cela en utilisant un tableau numpy à deux dimensions.
test1.py
import numpy as np
array = np.array([["a","b","c"],["d","e","f"],[1,2,3]])
print(np.where(array == "d"))
Résultat d'exécution
$ python test1.py
(array([1]), array([0]))
Le résultat de cette exécution montre visuellement que la chaîne d
est dans le ʻarray [1] [0] du tableau numpy ʻarray
. Voyons ci-dessous comment gérer réellement cette valeur de retour.
test2.py
import numpy as np
array = np.array([["a","b","c"],["d","e","f"],[1,2,3]])
print(np.where(array == "d"))
print(type(np.where(array == "d")))
print(np.where(array == "d")[0])
print(np.where(array == "d")[1])
print(np.where(array == "d")[0][0])
print(np.where(array == "d")[1][0])
Résultat d'exécution
$ python test2.py
(array([1]), array([0]))
<class 'tuple'>
[1]
[0]
1
0
Par conséquent, la valeur de retour de np.where
est tuple, et il est nécessaire de spécifier l'index de manière appropriée en fonction de la valeur souhaitée.
Cette fois, nous voulons spécifier la ligne (= 1) où se trouve la chaîne de caractères d
, donc nous utilisons np.where (array ==" d ") [0] [0]
.
test3.py
import numpy as np
array = np.array([["a","b","c"],["d","e","f"],[1,2,3]])
print(array[np.where(array == "d")[0][0]][:])
Résultat d'exécution
$ python test3.py
['d' 'e' 'f']
Je noterai également que j'ai essayé diverses choses en utilisant np.where.
test4.py
import numpy as np
array = np.array([["a","b","c"],["d","e","f"],[1,2,3]])
print(array[np.where(array == "d")])
Résultat d'exécution
$ python test4.py
['d']
Si vous le saisissez directement lors de la spécification de l'index du tableau numpy, l'élément spécifié sera renvoyé dans l'état d'être dans le tableau.
Cependant, cela ne nous donne pas la valeur «d».
Pour obtenir «d» lui-même, vous devez spécifier l'index du tableau retourné comme suit.
test5.py
import numpy as np
array = np.array([["a","b","c"],["d","e","f"],[1,2,3]])
print(array[np.where(array == "d")][0])
Résultat d'exécution
$ python test5.py
d
Jusqu'à présent, le but d'utiliser np.where est d'obtenir un index qui inclut un élément spécifique, donc j'ai l'impression que je ne peux pas l'utiliser comme ça, mais pardonnez-moi en bonus ...
Recommended Posts