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

如何使用两个不同数组的元素依次替换numpy数组中符合条件的元素

实现方案

问题原因

你之前的写法不生效有两个核心原因:

  1. array2[~np.isnan(array2)] 返回的是原数组的副本,不是内存视图,对副本做任何修改都不会影响原数组
  2. 直接调用np.mean(array2)会返回np.nan,所有数值和nan比较结果都是False,也会导致替换逻辑失效

完整实现代码

import numpy as np

# 初始化变量
array2 = np.array([np.nan, np.nan, np.nan, np.nan, 45, np.nan, 33, np.nan,
                   np.nan, 32, np.nan, np.nan, 44, np.nan, 10, 53, np.nan])
ordered_array_1 = [32, 10, 33]
ordered_array_2 = [44, 53, 45]

# 1. 计算非空元素的均值
mean_val = np.nanmean(array2)

# 2. 提取所有非空元素的索引和对应值
valid_idx = np.where(~np.isnan(array2))[0]
valid_vals = array2[valid_idx]

# 3. 生成比较掩码,按位置替换原数组
mask = valid_vals < mean_val
array2[valid_idx[mask]] = ordered_array_1
array2[valid_idx[~mask]] = ordered_array_2

# 输出验证
print(array2)

运行后输出结果和你预期的完全一致:

[nan nan nan nan 44. nan 32. nan nan 10. nan nan 53. nan 33. 45. nan]

内容的提问来源于stack exchange,提问作者Nikolay Yasinskiy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 05:42:01