如何将包含子数组的1D array转换为标准2D array
解决方案
首先先确认当前数组的属性,执行以下代码查看:
import numpy as np # 替换arr为你当前的数组变量名 print("当前数组维度:", arr.shape) print("当前数组元素类型:", arr.dtype)
如果输出维度为(1500,)、元素类型为object,说明你当前的数组确实是存储了1500个长度为25的子数组的1D对象数组,reshape无法直接生效的原因是numpy会将每个子数组识别为单个元素,不会自动展开子数组内容。
修复方法
方法1:直接堆叠子数组
使用np.vstack直接将所有子数组沿垂直方向堆叠,直接得到目标2D数组:
arr_2d = np.vstack(arr)
方法2:修正标准化操作(从根源避免问题)
你出现这个问题大概率是对DataFrame做标准化时使用了逐行/逐列apply且返回数组对象导致的,直接调用标准化工具的API处理DataFrame的数值矩阵,输出直接就是符合要求的2D数组:
from sklearn.preprocessing import StandardScaler scaler = StandardScaler() # 直接对DataFrame的数值矩阵做标准化,输出形状为(1500, 25)的2D数组 standardized_arr = scaler.fit_transform(df.values)
结果验证
执行以下代码确认转换结果正确:
print(arr_2d.shape) # 预期输出:(1500, 25)
内容的提问来源于stack exchange,提问作者D4w1d
相关产品推荐
相关产品推荐

