gpt4 book ai didi

python - 通过用户定义的索引用 np.nan 替换 np.array 值的最干净的方法

转载 作者:太空宇宙 更新时间:2023-11-03 13:38:14 25 4
gpt4 key购买 nike

一个关于mask 2-d np.array 数据的问题。

例如:

  1. 一个二维 np.array value,形状为 20 x 20。
  2. 索引 t = [(1,2),(3,4),(5,7),(12,13)​​]

如何通过 index 中的 (y,x) 屏蔽二维数组 value

通常用np.nan替换都是根据具体的值,比如y[y==7] = np.nan

在我的示例中,我想用 np.nan 替换值特定位置。

现在,我可以通过:

  1. 创建一个 20 x 20 形状的新数组 value_mask
  2. 循环并通过(i,j) == t[k]
  3. 证明位置
  4. 如果为真,value_mask[i,j] = value[i,j] ; 在诗句中value_mask[i,j] = np.nan

我的方法太庞大了,尤其是对于大量数据(3 级循环)。
有没有一些有效的方法来实现这一点?任何建议将不胜感激。

最佳答案

你快到了。

您可以将索引数组传递给数组。您可能对一维数组了解这一点。

对于二维数组,您需要向数组传递一个列表元组(每个轴一个元组;列表中的一个元素(必须具有相同的长度)用于您要选择的每个数组元素)。你有一个元组列表。所以你只需要“转置”它。

t1 = zip(*t)

为您提供索引数组的正确形状;您现在可以将其用作任何赋值的索引,例如:value[t1] = np.NaN

(如果您还不知道,在 python 教程中有很多关于这个技巧的很好的解释(使用 zip*)。)

关于python - 通过用户定义的索引用 np.nan 替换 np.array 值的最干净的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36262417/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com