2013-02-04 53 views
2

如何将布尔数组转换为可迭代的索引?从布尔数组中设置Python numpy索引

例如,

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] 

是否有更好的办法吗?

回答

3

尝试np.wherenp.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而言,它基本上等同于问题中的longform。

+0

我知道还有更好的办法!我看着“np.index *”,但没有找到任何东西。 –