如何在python中的布尔数组中将某些True元素设置为False?
我有两个布尔数组如何在python中的布尔数组中将某些True元素设置为False?,python,Python,我有两个布尔数组a和b。a中True元素的数量等于数组b的长度,如下所示: import numpy as np a = np.array([0, 1, 0, 1, 0, 0, 0, 1], dtype='bool') b = np.array([1,1,0], dtype='bool') 我知道我可以使用np。其中(a)[0]查找a中True元素的索引: idx = np.where(a)[0] res = np.array([0, 1, 0, 1, 0, 0, 0, 0]) 我有idx
a
和b
。a
中True
元素的数量等于数组b
的长度,如下所示:
import numpy as np
a = np.array([0, 1, 0, 1, 0, 0, 0, 1], dtype='bool')
b = np.array([1,1,0], dtype='bool')
我知道我可以使用np。其中(a)[0]
查找a
中True
元素的索引:
idx = np.where(a)[0]
res = np.array([0, 1, 0, 1, 0, 0, 0, 0])
我有idx
:
array([1, 3, 7])
现在根据b
array([1, 1, 0])
我希望将a
中的前两个True
值保持为True
,并将最后一个True
值翻转为False
。也就是说,将a[7]
的值翻转为0
,并将其余值保留在a
中:
idx = np.where(a)[0]
res = np.array([0, 1, 0, 1, 0, 0, 0, 0])
如何用python的方式实现它?假设我有一个长的a
数组和一个相对较短的b
。b
中的False
值不一定是最后一个值,可能会在任何地方发生多次,因此b
也可能发生错误
b = np.array([0,1,0], dtype='bool')
使用带有
np的负索引。其中
:
a[np.where(a)[0][-1]]=0
将数组设置为整数值:
array([0, 1, 0, 1, 0, 0, 0, 0])
只需使用
b
选择需要设置为False
的索引即可
a[idx[~b]] = False