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

如何在ndarray/列表中将np.NaN转为字符串且保留原数值类型

问题:将列表/NumPy数组中的NaN替换为指定字符串且保留其他元素类型

我写了一段Python代码尝试替换NaN:

import numpy as np

l2 =[4,np.nan, 5.1]
a2 = np.array(l2)

a3 = np.where(np.isnan(a2), '3.3', a2)
a3 = a3.astype(float)
print(a3)

a3 = np.where(np.isnan(a2), 'x', a2)
print(a3)

这段代码的输出结果为:

[4.  3.3 5.1]
['4.0' 'x' '5.1']

我的需求是:将列表或ndarray中的np.NaN替换为指定字符串,但不改变其他数值的类型——即原数值保持数字类型,仅NaN被替换为目标字符串,期望输出如下:

[4.0 'x' 5.1]

后来我意识到NumPy数组无法同时容纳不同数据类型,于是找到了解决方案:

import numpy as np

l2 =[4,np.nan, 5.1, np.nan, 3]
a2 = np.array(l2)

idxNan = (np.argwhere(np.isnan(l2)))
for idx in idxNan:
    l2[idx[0]] = 'x'
print(l2) 

这段代码输出了符合预期的结果:

[4, 'x', 5.1, 'x', 3]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 10:54:52