我有一个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.]]
Run Code Online (Sandbox Code Playgroud)
我想快速找到特定值的坐标并避免数组上的python循环.例如,数字4已打开:
row 0 and col 4
row 1 and col 4
row 2 and col 4
Run Code Online (Sandbox Code Playgroud)
并且搜索函数应该返回一个元组:
((0,4),(1,4),(2,4))
Run Code Online (Sandbox Code Playgroud)
这可以通过nunmpy的功能直接完成吗?
Jos*_*del 23
如果a是你的数组,那么你可以使用:
ii = np.nonzero(a == 4)
Run Code Online (Sandbox Code Playgroud)
要么
ii = np.where(a == 4)
Run Code Online (Sandbox Code Playgroud)
如果你真的想要一个元组,你可以从数组的元组转换为元组的元组,但numpy函数的返回值很方便,然后在你的数组上做其他操作.
转换为OP规范的元组:
tuple(zip(*ii))
Run Code Online (Sandbox Code Playgroud)
Sve*_*ach 15
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.)
Run Code Online (Sandbox Code Playgroud)
版画
[[0 4]
[1 4]
[2 4]]
Run Code Online (Sandbox Code Playgroud)
浮点比较的常见警告适用.