我需要弄清楚如何在二维 numpy 数组中找到一个值的所有索引。
例如,我有以下二维数组:
([[1 1 0 0],
[0 0 1 1],
[0 0 0 0]])
我需要找到所有 1 和 0 的索引。
1: [(0, 0), (0, 1), (1, 2), (1, 3)]
0: [(0, 2), (0, 3), (1, 0), (1, 1), (the entire all row)]
我试过了,但它没有给我所有的索引:
t = [(index, row.index(1)) for index, row in enumerate(x) if 1 in row]
基本上,它只给我每行中的一个索引 [(0, 0), (1, 2)]
。
最佳答案
您可以使用 np.where
返回 x 和 y 索引数组的元组,其中给定条件在数组中成立。
如果 a
是您的数组的名称:
>>> np.where(a == 1)
(array([0, 0, 1, 1]), array([0, 1, 2, 3]))
如果您想要一个 (x, y) 对列表,您可以zip
两个数组:
>>> list(zip(*np.where(a == 1)))
[(0, 0), (0, 1), (1, 2), (1, 3)]
或者,更好的是,@jme 指出 np.asarray(x).T
是生成对的更有效方法。
关于python - 如何在 Python 的二维数组中查找值的索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27175400/