我在使用代码时遇到以下索引错误。此代码是用于股票技术分析的Aroon指标。错误消息如下所示。我用的是Python27。在
回溯(最近一次呼叫): 文件“C:\Python\阿隆.py“,第46行,英寸 阿隆(20) 文件“C:\Python\阿隆.py“,第37行,在阿隆 高印刷体 索引器错误:索引106超出了大小为106的轴0的界限
示例数据可以位于http://sentdex.com/sampleData.txt我将其复制到自己的文本文件中。代码如下。它会打印数据,但随后我会收到以下错误消息,并试图找出原因。在
import numpy as np
import time
sampleData = open("sampleData.txt", "r").read()
splitData = sampleData.split("\n")
date, closep, highp, lowp, openp, volume = np.loadtxt(splitData,delimiter=",", unpack=True)
def aroon(tf):
AroonUp = []
AroonDown = []
AroonDate = []
x = tf
while x <= len(date):
Aroon_Up = ((highp[x-tf:x].tolist().index(max(highp[x-tf:x])))/float(tf))*100#numpy array to list.
Aroon_Down = ((lowp[x-tf:x].tolist().index(min(lowp[x-tf:x])))/float(tf))*100#numpy array to list.
AroonUp.append(Aroon_Up)
AroonDown.append(Aroon_Down)
AroonDate.append(date[x])
x+=1
print "######"
print highp[x] # THIS IS LINE 37
print Aroon_Up
print "=="
print lowp[x]
print Aroon_Down
print "#####"
return AroonDate,AroonUp,AroonDown
aroon(20)
Python开发人员竭尽全力确保您几乎不必手动编制索引,这正是因为它容易出错。在
如果您希望在序列中同时包含元素date(可能应该称为dates btw)和这些元素的索引,那么解决这个问题的更python方法是使用enumerate:
或者正如已经建议的那样,使用范围:
^{pr2}$我个人会用枚举法。在
另一方面,我建议使用描述性变量名,这样可以使其他人(和您自己)更容易地阅读代码。在
您应该更改以下行:
为此:
^{pr2}$文件中有106行,它正在查找第107行(从零开始)。在
请记住,在Python中,索引从0开始,而不是从1开始。
len(date) == 106
,因此最大有效索引是105,而不是106。尝试将while
条件更改为相关问题 更多 >
编程相关推荐