使用布尔型掩码为numpy数组分配值:如何?

问题描述 投票:1回答:1

我正在尝试将特定索引的值分配给我首先要在其上应用布尔掩码的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])

我在做什么错?

python arrays numpy indexing boolean
1个回答
1
投票

最后的index将在您索引完成的蒙版时被对待,这是证明:

>>> x[mask]
array([ nan,  nan,  nan])
>>> x[mask][index]
nan
>>> 

因此它实际上将nan更改为3,但是nan未被存储在任何地方,因此不会有任何变化,请使用:

x[np.where(mask)[0][index]] = 3
print(x) 
© www.soinside.com 2019 - 2024. All rights reserved.