2015-10-18 103 views
0

我是python的新手,遇到了我的代码问题。我试图减去两个数组,其中一个有新的值附加到它,但不能让它打印新的数组与减去值。我试图解决它给了我的值只是for循环的加法。我应该使用lambda来尝试和减去这两个?减去两个数组

from array import * 

类气温:

@staticmethod 
def Model(): 
    days = array('i',[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30]) 
    recordedtemp = array('i', [63,62,69,76,70,68,71,71,73,74,75,78,77,77,76,76,77,78,78,82,82,82,81,82,82,76,75,81,85,89]) 

    print("Temperature:") 

    for i in days: 
     modelarray = array('i'[0]) * 30 


     modeltemp = float(0.5904) * i + float(67.048) 
     rounding = int(round(modeltemp, 2)) 
     modelarray.append(rounding) 

     print(modeltemp) 

     continue 
    print("Error:") 
    a = list(map(lambda x,y: x - y, recordedtemp, modelarray)) 
    print(a) 
+0

你能解释一下更多关于你想要结果的内容吗?你在循环中的每一遍都重新创建了'modelarray'值,所以它总是有31个值(原来的30个零,加上一个附加值)。你是否想用新的替换零值?你以后的'map'调用将忽略任何附加值,因为当它给出的最短迭代器耗尽时,它会停止映射。最后一个问题:你是否考虑过使用'numpy'而不是'array'? 'numpy'是专为数字计算而设计的。 – Blckknght

+0

感谢您接受我的回答,请查看我在这里发布的额外代码。看起来你来自像Java或C#这样的东西,一切都必须是一个类。静态方法在Python中很少使用,因为我们有第一类函数。此外,如果你正在做科学类型的东西,看看NumPy让你的生活变得多容易。 – chthonicdaemon

回答

0

在你的代码的问题是在这里:

days = array('i',[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30]) 
recordedtemp = array('i', [63,62,69,76,70,68,71,71,73,74,75,78,77,77,76,76,77,78,78,82,82,82,81,82,82,76,75,81,85,89]) 

print("Temperature:") 

for i in days: 
    # modelarray = array('i'[0]) * 30 # original line 
    modelarray = array('i', [0]) * 30 # new line with extra comma 

    modeltemp = float(0.5904) * i + float(67.048) 
    rounding = int(round(modeltemp, 2)) 
    modelarray.append(rounding) 

    print(modeltemp) 

    continue 
print("Error:") 
a = list(map(lambda x,y: x - y, recordedtemp, modelarray)) 
print(a) 

你说你是新来的Python,所以让我也为你指明方向的NumPy库的问题,通过使用numpy数组重新说明你的问题,它可以避免循环遍历元素,就像你在这里完成的那样。这就是你的代码使用NumPy的样子。

import numpy 
days = numpy.array([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30]) 
recordedtemp = numpy.array([63,62,69,76,70,68,71,71,73,74,75,78,77,77,76,76,77,78,78,82,82,82,81,82,82,76,75,81,85,89]) 

print("Temperature:") 
print(recordedtemp) 

modelarray = numpy.round(0.5904*days + 67.048) 

print('Error:') 
print(recordedtemp - modeltemp) 

它也极有可能,你不需要字这是一个静态方法的类 - 记住Python有一流的功能,让你可以随便写,做这样的功能,或因为我有在这里完成,只需将代码编写为直接脚本即可。