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

如何在含NaN的NumPy数组中保留NaN并筛选正负元素?

解决NumPy数组中保留NaN值的问题

原代码中,当数组包含NaN时,由于NaN与任何数值比较都会返回False,所以np.where会触发else分支将NaN替换为0,不符合保留NaN的需求。以下是两种可行的修改方案:

方案一:嵌套np.where判断

先优先识别NaN值并保留,再处理正负数值的筛选:

import numpy as np

delta_up = np.where(np.isnan(delta), delta, np.where(delta > 0, delta, 0))
delta_down = np.where(np.isnan(delta), delta, np.where(delta < 0, delta, 0))

方案二:使用np.select多条件判断

通过多条件列表明确优先级,逻辑更直观:

import numpy as np

# 生成delta_up:保留NaN和正数,其余设为0
conditions_up = [np.isnan(delta), delta > 0]
choices_up = [delta, delta]
delta_up = np.select(conditions_up, choices_up, default=0)

# 生成delta_down:保留NaN和负数,其余设为0
conditions_down = [np.isnan(delta), delta < 0]
choices_down = [delta, delta]
delta_down = np.select(conditions_down, choices_down, default=0)

两种方案的核心逻辑一致:先判断是否为NaN,满足则保留原数组值;再判断数值正负,满足则保留;最后将不满足条件的元素设为0。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 07:20:34