有没有一种方法可以找到二维数组中每个输入值的所有索引?

3

我想在Python中创建一个函数,返回二维数组中每个重复值的x、y坐标。例如,如果我有以下数组和值:

array = [ [1 ,2 ,3]
          [2 ,3 ,1]
          [3 ,2, 1]]

search = 1

它会输出 (0,0) (1,2) (2,2)

我一直在尝试使用一些函数,比如np.where或将其转换为Pandas数据帧并进行搜索,但是我不确定最佳方法是什么。当我使用np.where时,它返回一个空数组,因为我正在使用长小数。我正在尝试在一个200 x 200的数组上执行此操作。


where 只有在条件数组正确的情况下才能发挥作用。如果 array==.01 在任何地方都不成立,那么 where 的结果将为空。查找浮点值的精确匹配是不可靠的。 - hpaulj
1个回答

5
我们可以使用 np.where。PS:a是你的数组。
list(zip(*np.where(a==search)))
[(0, 0), (1, 2), (2, 2)]

正如hpaulj所提到的

np.argwhere(np.isclose(a,search))
array([[0, 0],
       [1, 2],
       [2, 2]])

谢谢!如果我有一个很长的小数,最好的方法是什么?当我这样做时,它输出一个空数组。 - Jackson Fuson
1
@JacksonFuson list(zip(*np.where(np.isclose(a,search)))) - BENY
2
np.argwhere(cond) 执行的是 np.transpose(np.where(cond))。而你的 zip(*) 则是转置的列表版本。 - hpaulj
2
为了进一步用作索引,where 的结果通常比其转置更有用。那个由索引设计的数组元组。 - hpaulj

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接