2016-08-15 4 views
1

Ich habe zwei numpy Listen:Finden Indizes von zwei Listen

x = ['A', 'A', 'C', 'A', 'V', 'A', 'B', 'A', 'A', 'A'] 
y = ['1', '2', '1', '1', '3', '2', '1', '1', '1', '1'] 

Wie kann ich Indizes finden, wenn unerwuenscht x gleich 'A' und y'2' gleich?

Ich erwarte Indizes [1, 5] zu erhalten.

Ich habe versucht zu verwenden: np.where(x == 'A' and y == '2') aber es hat mir nicht geholfen.

+0

Sind sie numpy * arrays * oder * python * lists? – RoadieRich

Antwort

2

Sie müssen die Liste numpy Array konvertieren, um vektorisiert Betrieb zu verwenden, wie == und &:

import numpy as np 
np.where((np.array(x) == "A") & (np.array(y) == "2")) 
# (array([1, 5]),) 

Kürzere Version (wenn Sie sicher sind, dass x und y sind numpy Arrays):

>>> np.where(np.logical_and(x == 'A', y == '2')) 
(array([1, 5]),) 
2

reine python-Lösung:

>>> [i for i,j in enumerate(zip(x,y)) if j==('A','2')] 
[1, 5] 
1

Wenn Sie mit Listen arbeiten möchten:

idx1 = [i for i, x in enumerate(x) if x == 'A'] 
idx2 = [i for i, x in enumerate(y) if x == '2'] 
list(set(idx1).intersection(idx2)) 
Verwandte Themen