python - IndexError:运行python 3.9.1时元组索引超出范围
问题描述
运行我的代码时出错
dataset_total = pd.concat((dataset['Open'], dataset_test['Open']), axis = 0)
inputs = dataset_total[len(dataset_total) - len(dataset_test) - 60:].values
inputs = inputs.reshape(-1,1)
inputs = sc.transform(inputs)
X_test = []
for i in range(60, 80):
X_test.append(inputs[i-60:i, 0])
X_test = np.array(X_test)
X_test = np.reshape(X_test, (X_test.shape[0], X_test.shape[1], 1))
predicted_forex_price = regressor.predict(X_test)
predicted_forex_price = sc.inverse_transform(predicted_forex_price)
结果是:
/usr/local/lib/python3.6/dist-packages/ipykernel_launcher.py:8: VisibleDeprecationWarning: Creating an ndarray from ragged nested sequences (这是一个列表或元组的列表或元组或具有不同长度或形状)已弃用。如果您打算这样做,则必须在创建 ndarray 时指定 'dtype=object'
--------------------------------------------------------------------------- IndexError Traceback (most recent call last) <ipython-input-110-0e4e370b525c> in <module>() 7 X_test.append(inputs[i-60:i, 0]) 8 X_test = np.array(X_test) ----> 9 X_test = np.reshape(X_test, (X_test.shape[0], X_test.shape[1], 1)) 10 predicted_forex_price = regressor.predict(X_test) 11 predicted_forex_price = sc.inverse_transform(predicted_forex_price) IndexError: tuple index out of range
解决方案
您的切片长度不同,因此X_test
不是二维数组,而是一维数组,其中每个条目都是形状不一致的数组。
为了方便起见,这里使用较小的数组演示了该问题:
inputs = np.arange(3)
X_test = [inputs[i:i + 2] for i in range(3)]
print(X_test)
# [array([0, 1]), array([1, 2]), array([2])]
X_test = np.array(X_test)
print(X_test)
# [array([0, 1]) array([1, 2]) array([2])]
np.reshape(X_test, (X_test.shape[0], X_test.shape[1], 1))
# ---------------------------------------------------------------------------
# IndexError Traceback (most recent call last)
# <ipython-input-21-769dc2c0479b> in <module>()
# 6 print(X_test)
# 7 # [array([0, 1]) array([1, 2]) array([2])]
# ----> 8 np.reshape(X_test, (X_test.shape[0], X_test.shape[1], 1))
# IndexError: tuple index out of range
要解决此问题,您需要确保您的原始构造X_test
包含长度相同的输入子集。例如:
X_test = [inputs[i:i + 2] for i in range(2)]
X_test = np.array(X_test)
np.reshape(X_test, (X_test.shape[0], X_test.shape[1], 1))
# array([[[0],
# [1]],
# [[1],
# [2]]])
推荐阅读
- amazon-web-services - 如何通过 Terraform 创建 EKS 节点的 Cloudwatch 警报
- ml.net - ML.Net 模型生成器教程和 Azure 机器学习系统不正确还是我遗漏了什么?
- android - 原生 android UI 组件,使其成为 npm 包
- vba - 使用 VBA 向 Outlook 邮件添加附件失败并出现错误 80070005(权限不足),但前提是邮件还没有附件
- python - Python复制粘贴文件
- ios - 在 CarPlay 应用程序中显示加载活动指示器,如 Apple 文档所述,您应该
- java - Java 3DES 实现(学术)
- python - 如何使用 Builder.load 将字符串从 python 发送到 kv fille
- python - 如何在 tkinter 的列表框中打印字典列表
- reactjs - 我如何在反应原生反向平面列表中使用无限滚动