numpy中带赋值的连续布尔索引
我有以下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索
>>>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.])