You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何正确重塑NumPy数组以匹配LSTM股票预测模型的输入维度要求?

问题修复方案

1. 报错直接原因

你对numpy的reshape方法调用语法错误:reshape方法仅需传入目标形状的整数/整数元组参数,无需将数组本身作为入参。你写的y_train.reshape(y_train, x_train.shape)中把数组y_train传给了期望接收整数的第一个参数,因此抛出TypeError。

2. y_train形状异常的根本原因

你的循环范围设置错误,导致生成的y_train元素长度不一致:
循环for i in range(predict_days, len(train_data))运行到尾部时,train_data[i:i+predict_days]会因为索引越界返回长度不足predict_days的数组,numpy无法将长度不同的数组合并为三维数组,只能生成形状为(164,)的一维对象数组。

3. 完整修正方案

第一步:补全遗漏的导入

你代码中使用了dt.datetime但没有导入对应依赖,需要在开头添加:

import datetime as dt

第二步:修正循环范围(从根源解决形状问题)

将循环部分替换为以下代码,保证每个i对应的标签切片长度都为predict_days:

# 调整循环终止位置,保证每个i后都有足够的predict_days个元素作为标签
for i in range(predict_days, len(train_data) - predict_days + 1):
    x_train.append(train_data[i - predict_days:i])
    y_train.append(train_data[i:i+predict_days])
x_train = np.array(x_train)
y_train = np.array(y_train)

修改后y_train的形状会自动匹配为(样本数, predict_days, 1),无需额外reshape操作。

手动reshape的正确写法

如果后续需要手动调整数组形状,直接传入目标形状元组即可:

y_train = y_train.reshape(x_train.shape)

内容的提问来源于stack exchange,提问作者Martin Kunze

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 22:36:03