【发布时间】:2021-02-22 10:06:33
【问题描述】:
我有一个布尔数组,我想从中获取该布尔数组中所有 True 元素的索引值。我读了this answer on stack overflow,它建议使用np.where(mask)。在他们的回答中,返回的元组仅包含索引并且有 1 个空条目。在下面的情况下,我似乎也得到了一个 0 数组。为什么?我也找不到文档中的默认条目,所以我不知道np.where(mask) 实际上在做什么。通常我认为你需要同时传递一个条件和值来产生条件为真和假的地方,这里的条件是什么,它返回什么?
代码:
import numpy as np
x = np.arange(9)
mask = [x%3==0]
print('mask:',mask)
true_ixs = np.where(mask)
print('trueixs:',true_ixs)
输出:
mask: [array([ True, False, False, True, False, False, True, False, False])]
trueixs: (array([0, 0, 0]), array([0, 3, 6]))
【问题讨论】:
-
没有默认条目,但请仔细查看数组的形状。
-
啊,我没听懂,谢谢!
-
np.argwhere应用np.transpose以生成一个二维索引数组。相同的值,只是布局不同。