如何将 bool 数组转换为可迭代的索引?
例如,
import numpy as np
import itertools as it
x = np.array([1,0,1,1,0,0])
y = x > 0
retval = [i for i, y_i in enumerate(y) if y_i]
还有更好的方法吗?
最佳答案
尝试np.where
或np.nonzero
.
x = np.array([1, 0, 1, 1, 0, 0])
np.where(x)[0] # returns a tuple hence the [0], see help(np.where)
# array([0, 2, 3])
x.nonzero()[0] # in this case, the same as above.
参见help(np.where)
和help(np.nonzero)
。
可能值得注意的是,在 np.where
页面中,它提到对于 1D x
它基本上相当于问题中的长格式。
关于Python numpy 从 bool 数组设置索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14681250/