numpy 高级索引/子集化

ftf50wuq  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(83)

使用NumPy,给定a和一个较小的布尔数组b

a = np.array([False, True, True, False, True])
b = np.array([False, True, False])

如何获得c结果?

c = np.array([False, False, True, False, False])

也就是说,在baTrue部分之间进行布尔运算,以获得与a形状相同的数组c,因此aTrue的元素数量和数组b的长度匹配。

fnvucqvd

fnvucqvd1#

不如这样吧:

c = np.copy(a)
c[a] = b

首先,通过复制a创建c。现在,a是一个布尔数组,用于选择c的元素,其中a为True。
由于在某个值和True之间的布尔值and是值本身,因此在数组ba中的那些为True的元素之间的布尔值and只是数组b本身。
最后,因为aTrue元素的数量与b的长度相同,所以赋值c[a] = b是可能的。

相关问题