【问题标题】:Assigning a value to numpy array with a boolean mask: how to?使用布尔掩码为 numpy 数组赋值:如何?
【发布时间】:2020-05-09 13:10:40
【问题描述】:

我试图在特定索引处为一个 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])

我做错了什么?

【问题讨论】:

  • x[np.where(mask)[0][index]] = 3 ???即使用 'where' 获取主数组对应的索引。

标签: python arrays numpy indexing boolean


【解决方案1】:

最后的index 将被视为您正在索引完成的掩码,这是证明:

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

所以它实际上是将nan 更改为3,但是nan 没有存储在任何地方,所以什么都不会改变,使用:

x[np.where(mask)[0][index]] = 3
print(x) 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-29
    • 2020-11-19
    • 2016-12-10
    • 1970-01-01
    • 1970-01-01
    • 2014-12-22
    • 2020-07-19
    • 2020-04-23
    相关资源
    最近更新 更多