RuntimeWarning:在double_scalars

时间:2018-12-07 08:18:43

标签: arrays python-3.x for-loop

我已经分别运行了每个函数,并且我知道问题出在函数patternRecognition()中。我不断得到RuntimeWarning:在double_scalars中遇到的被零除,我不知道这个零从何而来。我知道代码仍然很糟糕,但是我还没有去清理它。

def percentChange(startPoint, currentPoint):
    return ((float(currentPoint - startPoint)/abs(startPoint))*100.00)

def patternStorage():
patStartTime = time.time()
x = len(avgLine) - 30
y = 11
while y < x:
    pattern = []
    p1 = percentChange(avgLine[y-10], avgLine[y-9])
    p2 = percentChange(avgLine[y-10], avgLine[y-8])
    p3 = percentChange(avgLine[y-10], avgLine[y-7])
    p4 = percentChange(avgLine[y-10], avgLine[y-6])
    p5 = percentChange(avgLine[y-10], avgLine[y-5])
    p6 = percentChange(avgLine[y-10], avgLine[y-4])
    p7 = percentChange(avgLine[y-10], avgLine[y-3])
    p8 = percentChange(avgLine[y-10], avgLine[y-2])
    p9 = percentChange(avgLine[y-10], avgLine[y-1])
    p10 = percentChange(avgLine[y-10], avgLine[y])
    outcomeRange = avgLine[y+20:y+30]  
    currentPoint = avgLine[y]
    try:
        avgOutcome = (functools.reduce(lambda x, y: x+y, outcomeRange) / len(outcomeRange))
    except Exception as e:
        print (str(e))
        avgOutcome=0
    futureOutcome = percentChange(currentPoint, avgOutcome)
    pattern.append(p1)
    pattern.append(p2)
    pattern.append(p3)
    pattern.append(p4)
    pattern.append(p5)
    pattern.append(p6)
    pattern.append(p7)
    pattern.append(p8)
    pattern.append(p9)
    pattern.append(p10)
    patternAr.append(pattern)
    performanceAr.append(futureOutcome)
    y += 1
patEndTime = time.time()
print (len(patternAr))
print (len(performanceAr))
print ("pattern storage took", patEndTime-patStartTime, "seconds")

def currentPattern():
cp1 = percentChange(avgLine[-11], avgLine[-10])
cp2 = percentChange(avgLine[-11], avgLine[-9])
cp3 = percentChange(avgLine[-11], avgLine[-8])
cp4 = percentChange(avgLine[-11], avgLine[-7])
cp5 = percentChange(avgLine[-11], avgLine[-6])
cp6 = percentChange(avgLine[-11], avgLine[-5])
cp7 = percentChange(avgLine[-11], avgLine[-4])
cp8 = percentChange(avgLine[-11], avgLine[-3])
cp9 = percentChange(avgLine[-11], avgLine[-2])
cp10 = percentChange(avgLine[-11], avgLine[-1])
patForRec.append(cp1)
patForRec.append(cp2)
patForRec.append(cp3)
patForRec.append(cp4)
patForRec.append(cp5)
patForRec.append(cp6)
patForRec.append(cp7)
patForRec.append(cp8)
patForRec.append(cp9)
patForRec.append(cp10)
print (patForRec)

def patternRecognition():
for eachPattern in patternAr:
    sim1 = 100.00 - abs(percentChange(eachPattern[0], patForRec[0]))
    sim2 = 100.00 - abs(percentChange(eachPattern[1], patForRec[1]))
    sim3 = 100.00 - abs(percentChange(eachPattern[2], patForRec[2]))
    sim4 = 100.00 - abs(percentChange(eachPattern[3], patForRec[3]))
    sim5 = 100.00 - abs(percentChange(eachPattern[4], patForRec[4]))
    sim6 = 100.00 - abs(percentChange(eachPattern[5], patForRec[5]))
    sim7 = 100.00 - abs(percentChange(eachPattern[6], patForRec[6]))
    sim8 = 100.00 - abs(percentChange(eachPattern[7], patForRec[7]))
    sim9 = 100.00 - abs(percentChange(eachPattern[8], patForRec[8]))
    sim10 = 100.00 - abs(percentChange(eachPattern[9], patForRec[9]))

    howSim = (sim1+sim2+sim3+sim4+sim5+sim6+sim7+sim8+sim9+sim10)/10.00

    patdex = patternAr.index(eachPattern)

    if howSim > 70:
        print ("__________________________________")
        print ("__________________________________")
        print (patForRec)
        print ("==================================")
        print ("==================================")
        print (eachPattern)
        print ("----------------------------------")
        print ('predicted outcome', performanceAr[patdex])
        print ("__________________________________")
        print ("__________________________________")

1 个答案:

答案 0 :(得分:0)

避免错误的一种方法是检查route53_facts:是否为零:

max_items:

这将避免被零除。