Python中如何将二维列表转为一维列表并将NaN替换为0
二维数组转一维+替换NaN为0的实现方法
场景1:使用NumPy处理(适合原始数据为NumPy二维数组)
如果你的训练数据是NumPy格式的二维数组,直接用以下代码就能搞定:
import numpy as np # 模拟你的原始二维数组 original_arr = np.array([ [0], [0], [0], [1049.3618], [1049.3618], [1049.3618], [1047.8524], [1034.0015], [1011.92944], [997.6305], [985.61743], [971.35583], [953.3492], [934.00104], [912.93585], [886.3636], [857.08594], [832.37103], [803.3781], [775.04083] ]) # 1. 转成一维数组:用flatten()生成新数组,或者ravel()返回原数组视图 one_d_arr = original_arr.flatten() # 2. 替换NaN为0:直接用nan_to_num处理 one_d_arr = np.nan_to_num(one_d_arr, nan=0) # 转成普通Python列表输出(可选) print(one_d_arr.tolist())
场景2:纯Python列表处理(适合原始数据为嵌套列表)
如果数据是普通的嵌套列表,用列表推导式就能完成转换和替换:
# 模拟原始嵌套列表 original_list = [ [0], [0], [0], [1049.3618], [1049.3618], [1049.3618], [1047.8524], [1034.0015], [1011.92944], [997.6305], [985.61743], [971.35583], [953.3492], [934.00104], [912.93585], [886.3636], [857.08594], [832.37103], [803.3781], [775.04083] ] # 1. 转成一维列表 one_d_list = [item[0] for item in original_list] # 2. 替换NaN为0(需要导入numpy判断NaN,或者用math.isnan) import numpy as np one_d_list = [0 if isinstance(x, float) and np.isnan(x) else x for x in one_d_list] print(one_d_list)
关键说明
flatten()vsravel():前者返回新数组,修改不会影响原数组;后者返回原数组的视图,修改会同步到原数组,按需选择即可。- 替换NaN:如果不用NumPy,也可以用
math.isnan(),但要注意它只能处理float类型,整数不会有NaN,所以需要先判断类型。
内容的提问来源于stack exchange,提问作者Ardan
相关产品推荐
相关产品推荐

