我有一个numpy数组:
[[ 0. 1. 2. 3. 4.]
[ 7. 8. 9. 10. 4.]
[ 14. 15. 16. 17. 4.]
[ 1. 20. 21. 22. 23.]
[ 27. 28. 1. 20. 29.]]
我想快速找到特定值的坐标并避免数组上的python循环。例如,数字4
已打开:
row 0 and col 4
row 1 and col 4
row 2 and col 4
并且搜索函数应该返回一个元组:
((0,4),(1,4),(2,4))
这可以通过nunmpy的函数直接完成吗?
答案 0 :(得分:21)
如果您的数组是a
,那么您可以使用:
ii = np.nonzero(a == 4)
或
ii = np.where(a == 4)
如果你真的想要一个元组,你可以从数组的元组转换为元组的元组,但numpy函数的返回值很方便,然后在你的数组上进行其他操作。
转换为OP规范的元组:
tuple(zip(*ii))
答案 1 :(得分:12)
a = numpy.array([[ 0., 1., 2., 3., 4.],
[ 7., 8., 9., 10., 4.],
[ 14., 15., 16., 17., 4.],
[ 1., 20., 21., 22., 23.],
[ 27., 28., 1., 20., 29.]])
print numpy.argwhere(a == 4.)
打印
[[0 4]
[1 4]
[2 4]]
浮点比较的常见警告适用。