numpy数组上项的坐标

Ηλί*_*ίας 13 python numpy

我有一个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)

浮点比较的常见警告适用.