如何解决运行代码时报TypeError: _append_dispatcher()缺少'values'参数错误
报错原因与解决方案
核心报错原因
np.append()的官方要求语法为np.append(arr, values, axis=None),你在循环内调用该函数时仅传入了待追加的training_set_scaled切片,缺少第一个必填参数「待追加元素的原数组」,直接触发参数缺失报错。- 额外逻辑错误:你将数组转换、维度重塑的操作写在了循环内部,第一次循环执行时X_train仅包含1组60个元素的一维数据,调用
X_train.shape[1]会直接触发维度不匹配报错。
修正后的代码
你初始化的X_train、y_train本身是列表,直接使用列表的append()方法性能更高、也不会出现参数传错问题,修正后代码如下:
import numpy as np import matplotlib.pyplot as plt import pandas as pd from sklearn.preprocessing import MinMaxScaler # 此处保留你原本初始化training_set_scaled的相关逻辑 X_train = [] y_train = [] # 循环内仅向列表追加元素,不做数组转换和变形操作 for i in range(60, 2035): X_train.append(training_set_scaled[i-60:i, 0]) y_train.append(training_set_scaled[i, 0]) # 循环结束后统一转换为numpy数组 X_train, y_train = np.array(X_train), np.array(y_train) # 统一变形为时序模型所需的三维格式:(样本数, 时间步, 特征数) X_train = np.reshape(X_train, (X_train.shape[0], X_train.shape[1], 1))
补充说明
如果坚持要使用np.append()实现,正确写法为X_train = np.append(X_train, training_set_scaled[i-60:i, 0]),但该方法会在每次调用时重新创建数组,性能远低于先用列表存储数据、循环结束后统一转数组的实现方式,不推荐使用。
内容的提问来源于stack exchange,提问作者Black040
相关产品推荐
相关产品推荐

