[PYTHON] Obtenir des lignes contenant des éléments spécifiques dans np.where

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é ...

Obtenir des lignes contenant des éléments spécifiques dans np.where

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']

prime

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

Obtenir des lignes contenant des éléments spécifiques dans np.where
Extraire des lignes contenant une "chaîne" spécifique avec Pandas
Obtenez le nombre d'éléments spécifiques dans la liste python
J'obtiens un UnicodeDecodeError avec mecab-python3
Compter des chaînes spécifiques dans un fichier
J'obtiens une KeyError dans pyclustering.xmeans
Enregistrer une variable spécifique dans tensorflow.session
Obtenir un booléen avec une requête Flask
Comment obtenir un nom de colonne et un nom d'index spécifiques avec Pandas DataFrame
Comment obtenir stacktrace en python
Obtenez une chaîne JSON Unicode contenant du japonais.
Je ne peux pas obtenir l'élément dans Selenium!
Obtenez un jeton pour conoha avec python
Obtenir un domaine appartenant à une organisation spécifique
Si branche en fonction de l'existence ou non d'un élément spécifique dans la liste
[Python] Récupérez les fichiers dans le dossier avec Python
Quand j'obtiens une erreur de pilote chrome dans Selenium
Lire un fichier contenant des lignes brouillées en Python
Récupérer l'appelant d'une fonction en Python
Obtenir uniquement les éléments de sous-classe dans une liste
Cloner avec une branche / balise spécifique dans GitPython
Obtenez une image panoramique sur Google Street View
Touchons une partie de l'apprentissage automatique avec Python
Entrez une valeur spécifique pour la variable dans tensorflow
Créer un package contenant des commandes globales en Python
Comment compter les nombres dans une plage spécifique
J'obtiens une exception java.util.regex.PatternSyntaxException lors du fractionnement d'une chaîne dans PySpark
[Python] Récupère l'élément en spécifiant l'attribut name dans BeautifulSoup
Enregistrer les tweets contenant des mots-clés spécifiques sur Twitter au format CSV
BigQuery - Si vous obtenez une erreur Reason: responseTooLarge en Python
Obtenez l'ID utilisateur et le nom d'écran du participant dans Slack
Arrêter une instance avec une balise spécifique dans Boto3
Obtenir la valeur d'une clé spécifique jusqu'à l'index spécifié de la liste de dictionnaires en Python
Programme Python qui recueille quotidiennement des tweets contenant des mots-clés spécifiques et les enregistre en csv