Python中如何将数组X中非NaN的所有元素替换为10.0?
一步替换numpy数组中非NaN元素为10.0的方法
当然有一步到位的实现方式,这里提供两种常用的简洁写法:
方法1:使用np.where()生成新数组
np.where()可以根据条件直接返回替换后的新数组,一步完成判断和赋值:
import numpy as np from numpy import nan X = np.array([[3.25774286e+02, 3.22008654e+02, nan, 1.85356823e+02, 1.85356823e+02, 3.22008654e+02, nan, 3.22008654e+02]]) # 一步替换:NaN保留,非NaN替换为10.0 X = np.where(np.isnan(X), X, 10.0) print(X)
执行后输出:
[[10. 10. nan 10. 10. 10. nan 10.]]
方法2:布尔索引原地修改数组
如果不需要生成新数组,想直接修改原数组,用布尔索引一步搞定:
import numpy as np from numpy import nan X = np.array([[3.25774286e+02, 3.22008654e+02, nan, 1.85356823e+02, 1.85356823e+02, 3.22008654e+02, nan, 3.22008654e+02]]) # 选中所有非NaN的位置,直接赋值为10.0 X[~np.isnan(X)] = 10.0 print(X)
输出结果和上面完全一致。
两种方法都属于一步操作,前者返回新数组,后者原地修改原数组,可根据实际需求选择。
内容的提问来源于stack exchange,提问作者Wiz123
相关产品推荐
相关产品推荐

