numpy数组上项的坐标

时间:2011-03-30 14:08:12

标签: python geometry 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.]]

我想快速找到特定值的坐标并避免数组上的python循环。例如,数字4已打开:

row 0 and col 4
row 1 and col 4
row 2 and col 4

并且搜索函数应该返回一个元组:

((0,4),(1,4),(2,4))

这可以通过nunmpy的函数直接完成吗?

2 个答案:

答案 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]]

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