Python RNN场景下二维数组转三维数组失败,求转为(5,7,3)方案
数组重塑为三维数组的问题解决
核心规则:重塑的元素总数必须匹配
numpy数组重塑有硬性要求:原数组总元素数必须等于目标形状各维度的乘积。
你的原数组X从DataFrame的6列提取,形状为(5,6),总元素数是 5*6=30;而目标形状(5,7,3)的总元素数是 5*7*3=105,两者不相等,这就是直接用reshape无效的原因。
可行解决方向
1. 调整目标形状至匹配元素总数
如果可以修改目标形状,选择总元素数为30的三维结构,比如(5,3,2)或(5,2,3),直接重塑即可:
# 重塑为(5,3,2) X_3d = X.reshape(5, 3, 2) # 或重塑为(5,2,3) X_3d = X.reshape(5, 2, 3)
2. 填充元素以达成目标形状
若必须得到(5,7,3)的形状,需要补充105-30=75个元素,以下是两种常用填充方式:
方式一:补0填充
# 创建(5,7,3)的全0数组 X_3d = np.zeros((5,7,3)) # 将原数组重塑为(5,2,3)后填充到前2列 X_3d[:, :2, :] = X.reshape(5,2,3)
方式二:重复现有元素填充
# 先将原数组重塑为(5,2,3) X_reshaped = X.reshape(5,2,3) # 重复列维度后截取到7列 X_3d = np.tile(X_reshaped, (1,4,1))[:, :7, :]
3. 确认需求是否存在笔误
如果目标形状是输入错误,比如实际需要(5,2,3)这类总元素数为30的形状,直接使用reshape即可完成转换。
内容的提问来源于stack exchange,提问作者Shu
相关产品推荐
相关产品推荐

