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

Python中使用np.where比较列表时遇到nan值如何直接返回nan

实现方案

首先要先将所有列表转换为数值类型数组,避免字符串与nan混合时的比较逻辑异常,再通过嵌套np.where优先处理nan的场景:

import numpy as np

# 原始数据
delta_list = ['2','3','4',np.nan]
lb = ['1','2','3','4']
ub = ['5','6','7','8']

# 转换为浮点型数组,统一数值比较逻辑
delta_arr = np.array(delta_list, dtype=np.float64)
lb_arr = np.array(lb, dtype=np.float64)
ub_arr = np.array(ub, dtype=np.float64)

# 优先判断nan,非nan场景走原有判断逻辑
flag_1 = np.where(
    np.isnan(delta_arr),
    np.nan,
    np.where((delta_arr > lb_arr) & (delta_arr < ub_arr), 0, 1)
).tolist()

运行后得到的flag_1结果为[0.0, 0.0, 0.0, nan],如果需要转换为字符串格式可以自行做后续类型处理。

逻辑说明

  • 优先用np.isnan()识别delta_arr中的空值位置,直接对应返回nan
  • 非空值位置保留原有区间判断规则:落在(lb, ub)区间内返回0,否则返回1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 00:36:06