分配给双索引 numpy 数组

Assigning to a double-indexed numpy array

我知道当分配给双索引数组时会产生不好的结果,因为你分配给一个视图而不是直接分配给一个数组,但我不知道如何正确分配给双索引数组:

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])