我正在尝试将特定索引的值分配给我首先要在其上应用布尔掩码的numpy向量(严格来说,我希望索引引用“掩码”数组)。但是,令人惊讶的是,以下内容似乎无效:
假设我要更改“有效”向量的第一个值(掩码为True的那个值,即该向量的第二个“绝对”值。
import numpy as np
x = np.full(4, np.nan)
mask = np.array([False, True, True, True])
index = 0
x[mask][index] = 3
x
>>> array([nan, nan, nan, nan])
我在做什么错?
最后的index
将在您索引完成的蒙版时被对待,这是证明:
>>> x[mask]
array([ nan, nan, nan])
>>> x[mask][index]
nan
>>>
因此它实际上将nan
更改为3
,但是nan
未被存储在任何地方,因此不会有任何变化,请使用:
x[np.where(mask)[0][index]] = 3
print(x)