You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将数组a中的nan值同步赋值到数组b的对应位置

如何将NumPy数组a中NaN的位置同步赋值NaN到数组b对应位置?

给定两个NumPy数组:

import numpy as np
a = np.array([[ 3, np.nan,  4,  1,  4,  2,  2,  3],
              [ 2, np.nan,  1,  3, np.nan,  4,  4,  3],
              [ 3,  2, np.nan,  4, np.nan, np.nan,  3,  4],
              [ 2,  2,  2, np.nan,  1,  1 ,np.nan,  2]])

b = np.array([[ 2,  3,  2, 2,  3,  3,  3,  3],
              [ 3,  3,  1,  4,  1,  4,  1, 7],
              [ 4,  2, 5,  4,  4,  3, 10,  4],
              [ 2,  4,  2,  1,  4,  1,  3, np.nan]])

需求:将数组a中所有值为NaN的位置,同步把数组b的对应位置也设为NaN。

解决方案

利用np.isnan()生成布尔掩码定位NaN位置,直接赋值即可:

# 定位a中NaN的位置,将b对应位置设为NaN
b[np.isnan(a)] = np.nan

# 查看结果
print(b)

执行结果

输出与预期一致:

[[ 2. nan  2.  2.  3.  3.  3.  3.]
 [ 3. nan  1.  4. nan  4.  1.  7.]
 [ 4.  2. nan  4. nan nan 10.  4.]
 [ 2.  4.  2.  1. nan  1. nan nan]]

说明

  • np.isnan(a)会生成一个和a形状完全相同的布尔数组,其中a中为NaN的位置标记为True,其余为False。
  • 用这个布尔数组作为索引,可以直接选中b中需要修改的位置,批量赋值NaN,操作高效且简洁。
  • 如果不想修改原数组b,可以先创建副本:b_copy = b.copy(),再对b_copy执行上述赋值操作。

内容的提问来源于stack exchange,提问作者Bhar Jay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 21:18:33