Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python中的布尔数组中将某些True元素设置为False?_Python - Fatal编程技术网

如何在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