2016-11-22 6 views
0

Ich habe eine Reihe wie folgt:Wie bekomme ich jedes Element von numpy array?

Keys, die einige Werte gespeichert werden. zum Beispiel Schlüssel [2,3,4,7,8]

Wie bekomme ich den Index von 4 und speichere den Index in einer int-Variablen?

Zum Beispiel ist der Indexwert von 4 2, also wird 2 in einer int-Variablen gespeichert.

Ich habe versucht, mit folgenden Codesegment

//enter code here 

for i in np.nditer(Keys): 
     print(keys[i]); 

//enter code here 

Ich verwende Python 3.5 Spyder 3.5.2 Anaconda 4.2.0

+0

Verwenden Sie nicht 'nditer'; Das ist für fortgeschrittene Zwecke. – hpaulj

Antwort

0

Es gibt mehrere Möglichkeiten. Wenn die Liste nicht zu groß ist, dann:

where_is_4 = [e for i,e in enumerate(Keys) if i==4][0] 

Was dies tut, ist es über die Liste mit Aufzählungs Schleifen und erstellt eine Liste, die den Wert des Enumerators enthält jedes Mal, wenn der Wert ‚4‘ auftritt.

+0

Wie würden Sie es tun, wenn 'Schlüssel' ein numpliges Array wäre? – hpaulj

0

Warum nicht einfach tun:

for i in range(len(Key)): 
    if (Key[ i ] == 4): 
     print(i) 
0

Sie alle Indizes finden können, wo der Wert 4 mit:

>>> keys = np.array([2,3,4,7,8]) 
>>> np.flatnonzero(keys == 4) 
array([2]) 
1

Ist keys eine Liste oder numpy Array

keys = [[2,3,4,7,8] # or 
keys = np.array([2,3,4,7,8]) 

Sie Sie müssen nicht iterieren, um die Elemente von beiden zu sehen. Aber Sie können tun

for i in keys: 
    print(i) 
for i in range(len(keys)): 
    print(keys[i]) 
[i for i in keys] 

diese für beide arbeiten.

Wenn Sie den Index des Wertes 4 wollen, muss die Liste eine Methode:

keys.index(4) 

für das Array

np.where(keys==4) 

ist ein nützliches Stück Code. Auch

np.in1d(keys, 4) 
np.where(np.in1d(keys, 4)) 

Vergessen Sie über np.nditer. Das ist für fortgeschrittene Programmierung, nicht Routine-Iteration.

0

Es gibt eine native Methode namens where.

Es wird ein Array der Indizes zurückgegeben, wo eine bestimmte Bedingung wahr ist. So können Sie nur den ersten Eintrag wählen, wenn die Liste nicht leer ist:

N = 4 
indicies = np.where(x==N)[0] 
index = None 
if indicies: 
    index = indicies[0] 
0

Verwendung von numpy.where(condition) wird hier eine gute Wahl sein. Aus dem folgenden Code können Sie die Position von 4 erhalten.

import numpy as np 
keys = np.array([2,3,4,7,8]) 
result = np.where(keys==4) 
result[0][0] 
Verwandte Themen