python - 如何在 Python 的二维数组中查找值的索引?

标签 python arrays numpy multidimensional-array

我需要弄清楚如何在二维 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/

相关文章:

javascript - CodeCamp 算法虚假保镖

javascript - 计算对象属性给出与点表示法不同的结果

python ,排序

c++ - 为什么字符串数组会导致 LNK2001 错误?

python - 有没有办法将两个列表与 xarray 数据变量中的相应信息连接起来?

python - PyCUDA + numpy,以及一般字符串处理

python - 将 numpy 数组保存到 csv 会产生不匹配错误

python - MySQL - 在 Python 中使用 urllib 时出现奇怪的符号

python - 添加新选项 configparser 时的重复部分

python - 使用过的 "import os"被视为未使用