numpy中带赋值的连续布尔索引

numpy中带赋值的连续布尔索引,numpy,indexing,Numpy,Indexing,我有以下numpy阵列: >>>myarray = np.zeros(4) >>>index_array1 = np.array([True, False, True, False]) >>>index_array2 = np.array([False, True]) 在使用index\u array1和index\u array2进行连续bool索引后,我想为myarray赋值。不幸的是,第一个bool索引复制了数组,因此第二个bool索

我有以下numpy阵列:

>>>myarray = np.zeros(4)
>>>index_array1 = np.array([True, False, True, False])
>>>index_array2 = np.array([False, True])
在使用
index\u array1
index\u array2
进行连续bool索引后,我想为
myarray
赋值。不幸的是,第一个bool索引复制了数组,因此第二个bool索引工作在一个副本上<代码>myarray保持不变

>>>myarray[index_array1][index_array2] = 3
>>>myarray

array([0., 0., 0., 0.])
我已经有了一个解决方案,但我发现它有点违反直觉。还有比这更好的解决办法吗

>>>myarray[np.where(index_array1)[0][index_array2]] = 4
>>>myarray

array([0., 0., 4., 0.])

另一种方法是使用辅助遮罩编辑初始遮罩-


另一种方法是使用辅助遮罩编辑初始遮罩-

In [9]: index_array1[index_array1] = index_array2

In [11]: myarray[index_array1] = 4

In [12]: myarray
Out[12]: array([0., 0., 4., 0.])