2015-10-14 6 views
0

Est-ce que Numpy a une fonction de recherche rapide d'élément dans un tableau 2D et retourne ses index? moyenne par exemple:Recherche rapide Python dans un tableau numpy

a=54 
array([[ 0, 1, 2, 3], 
     [ 4, 5, 54, 7], 
     [ 8, 9, 10, 11]]) 

valeur égale sera donc array[1][2]. Bien sûr, je peux le faire en utilisant loops- simple mais je veux quelque chose de similaire à:

if 54 in arr 
+0

Y avait-il plus à votre code? –

+1

'numpy.where (a == 54)' est probablement ce que vous cherchez – Akavall

+0

Possible duplicate of [Existe-t-il une fonction Numpy pour retourner le premier index de quelque chose dans un tableau?] (Http://stackoverflow.com/ questions/432112/is-there-a-numpy-function-to-return-le-premier-index-de-quelque-chose-dans-un-tableau) – paisanco

Répondre

2
In [4]: import numpy as np 

In [5]: my_array = np.array([[ 0, 1, 2, 3], 
          [ 4, 5, 54, 7], 
          [8, 54, 10, 54]]) 

In [6]: my_array 
Out[6]: 
array([[ 0, 1, 2, 3], 
     [ 4, 5, 54, 7], 
     [ 8, 54, 10, 54]]) 

In [7]: np.where(my_array == 54) #indices of all elements equal to 54 
Out[7]: (array([1, 2, 2]), array([2, 1, 3])) #(row_indices, col_indices) 

In [10]: temp = np.where(my_array == 54) 

In [11]: zip(temp[0], temp[1]) # maybe this format is what you want 
Out[11]: [(1, 2), (2, 1), (2, 3)] 
+0

Oui, votre variante est juste ce dont j'ai besoin, il retourne l'indice de l'élément, mais le tableau que j'utilise est nommé tableau avec des valeurs mixtes. new_array = np.core.records.fromrecords ([(données [0], données [1], données [2], données [3], données [4], données [5], NDate)], noms = 'Date , Nom, Âge, Début, Fin, Moy, NDate ', formats =' S10, f8, f8, f8, f8, f8, f16 '). et quand j'utilise quelque chose comme temp = np.where (new_array == 7.43) il me renvoie "" (array ([], dtype = int32),) mais pas l'index de la valeur. Mais la valeur 7.43 existe dans le tableau. – Riggun