在Python中查找矩阵中所有元素的出现
问题描述:
我有列表的列表,我想找到所有出现的坐标。我设法做到了这一点,但我想知道是否有更好的方法来使用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)]
答
虽然你可以得到这个在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)]
Ooooooh! Oooohh!一个令人尴尬的并行问题! (是的,三个(!)惊叹号!) – 2013-03-26 17:28:13