如何在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
相关产品推荐
相关产品推荐

