2013-03-26 138 views
1

我有列表的列表,我想找到所有出現的座標。我設法做到了這一點,但我想知道是否有更好的方法來使用numpy來做到這一點。在Python中查找矩陣中所有元素的出現

這是我做過什麼:

my_list = [[1,2,3,1, 3], [1,3,2]] 

target_value = 3 
locations = [] 
for k in range(len(my_list)): 
    indices = [i for i, x in enumerate(my_list[k]) if x == target_value] 
    locations.append((k, indices)) 
locations2 = [] 
for row in locations: 
    for i in row[1]: 
     locations2.append((row[0], i)) 
print locations2 # prints [(0, 2), (0, 4), (1, 1)] 
+0

Ooooooh! Oooohh!一個令人尷尬的並行問題! (是的,三個(!)驚歎號!) – 2013-03-26 17:28:13

回答

3

雖然你可以得到這個在numpy的工作,numpy的是不是都在破爛的陣列是幸福的。我認爲純Python版本的理解版本看起來不錯:

>>> my_list = [[1,2,3,1, 3], [1,3,2]] 
>>> [(i,j) for i,x in enumerate(my_list) for j,y in enumerate(x) if y == 3] 
[(0, 2), (0, 4), (1, 1)]