【发布时间】:2014-07-15 04:00:54
【问题描述】:
我有这个充满布尔值的数组:
array([[[ True, True, False, False, False, False],
[ True, False, False, False, False, False]],
[[False, False, True, False, True, False],
[ True, False, False, False, False, False]],
[[ True, False, False, False, False, False],
[ True, False, False, False, False, False]]], dtype=bool)
我想在每一行的每一列中获取第一次出现 True 的索引,所以答案是这样的:
array([[0,0,0],
[0,1,0],
[1,0,2],
[1,1,0],
[2,0,0],
[2,1,0]])
有没有简单快捷的方法?
【问题讨论】:
-
您想要第一次出现,还是所有出现?您的措辞建议前者,而您的示例输出建议后者。
-
我想在每一行的每一列中第一次出现 - 一旦我们在一列中找到 True,移动到下一列,寻找 True,切换到下一行,重复。在使用 3d 数组时,我很难找到正确的措辞,抱歉。
-
根据this answer 获取项目的第一个索引将出现在 numpy 2.0 中。
-
您的示例输入和输出有问题,您的数组的形状为
(3, 2, 6),您的输出形状为(6, 3),但在输出中您使用从0到2的索引,这是一个@ 987654326@。也许您可以通过以下方式更好地描述您的问题:遍历轴x,然后遍历轴y并在轴z中找到第一个索引。
标签: python arrays numpy boolean