赋值给双索引numpy数组



我知道,当分配给双索引数组给出坏的结果,因为你分配给一个视图,而不是数组直接,但我无法弄清楚如何正确地分配给双索引数组:

import numpy as np
foo = np.array([1, 2, 3, 4, 5])
bar = np.array([False, True, True, True, False])
foo[bar][1:2] = np.array([30, 40])
foo #array([1, 2, 30, 40, 5])

是否有一种方法来分配一个值(数组)双索引数组?

假设您希望同时使用布尔数组和该数组中True值的一部分进行索引,则需要计算另一个布尔数组来总结这些条件。

下面是基于布尔数组索引的一种可能的方法:

idx = np.arange(len(bar))
foo[idx[bar][1:3]] = np.array([30, 40])

输出:array([ 1, 2, 30, 40, 5])