使用Numpy按均值填充缺失值调整数组到指定形状的实现方法
Numpy数组按均值填充扩容实现方法
通用实现逻辑
你可以通过计算原数组均值、动态生成填充数组、数组拼接三步完成需求,该方法对所有长度小于目标长度的(?,1)数组都适用:
- 计算原数组所有元素的平均值
- 计算需要填充的元素个数 = 目标长度 - 原数组第一维长度
- 生成形状为(填充个数, 1)、所有值为均值的数组,和原数组按行拼接即可
针对你给出的(22,1)数组的示例代码
import numpy as np # 你的原始(22,1)数组 origin_arr = np.array([[365.], [173.], [389.], [173.], [342.], [173.], [294.], [165.], [246.], [142.], [254.], [142.], [357.], [260.], [389.], [339.], [389.], [339.], [381.], [410.], [381.], [410.]]) # 计算均值 mean_val = origin_arr.mean() # 计算需要填充的数量:目标长度24减去原长度22 pad_count = 24 - origin_arr.shape[0] # 生成填充数组 pad_arr = np.full((pad_count, 1), mean_val) # 拼接得到(24,1)的新数组 new_arr = np.concatenate([origin_arr, pad_arr], axis=0)
如果你需要把填充值放在数组开头而非末尾,只需要把拼接顺序改为np.concatenate([pad_arr, origin_arr], axis=0)即可。
(19,1)数组的适配说明
完全可以使用同样的方法处理,不需要修改逻辑:代码会自动计算需要填充的元素个数为24-19=5,生成对应长度的均值填充数组拼接即可。
内容的提问来源于stack exchange,提问作者alb
相关产品推荐
相关产品推荐

