我正在寻找一种方法来组合两个索引数组b
和i
(一个是boolean类型,一个是integer类型)来切片另一个数组x
。
x = np.array([5.5, 6.6, 3.3, 7.7, 8.8])
i = np.array([1, 4])
b = np.array([True, True, False, False, False])
得到的数组应该是x == [6.6]
,因为它是按i
(i[0]
)和b[1]
中的值索引的。
换句话说,我正在寻找一种方法来表示x[i & b]
,其中i
是一个整数数组,我知道如何将布尔索引数组转换为整数索引数组(np.where(b)
),但这只会将问题转移到组合两个整数索引数组上,对此我也没有解决方案。
显然,后续切片不起作用(即x[i][b]
,反之亦然),因为维度在每次单独切片后都会改变。
任何帮助都将不胜感激。
1条答案
按热度按时间xu3bshqb1#
一种
O(n)
方法是将索引数组i
转换为布尔数组,然后 * 取&
:此方法推广到所有逻辑运算符(例如
&
,|
,...)。一种更有效的内存方法是将相同的索引操作
i
应用于b
: