Python 两个数组相减

Python 两个数组相减,python,arrays,Python,Arrays,我是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

我是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)

代码中的问题如下:

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时代码的外观

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有第一类函数,所以您可以编写一个函数来实现这一点,或者像我在这里所做的那样,只需将代码编写为一个直接的脚本。

您能进一步解释一下您想要的结果是什么吗?每次通过循环时都要重新创建modelarray值,因此其中始终有31个值—原始的30个零加上一个附加值。您是否希望用新值替换零值?稍后的映射调用将忽略任何附加值,因为它在给定的最短的可映射项用完时停止映射。最后一个问题:您是否考虑过使用numpy而不是数组?numpy是专门为数值计算而设计的。感谢您接受我的回答,请看一下我在这里发布的额外代码。看起来您来自Java或C之类的地方,在那里所有的东西都必须是类。在Python中很少使用静态方法,因为我们有一流的函数。另外,如果你在做科学类的事情,看看NumPy让你的生活变得多么简单。