【问题标题】:Subtracting Two Arrays减去两个数组
【发布时间】:2015-10-18 04:47:41
【问题描述】:

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

【问题讨论】:

  • 您能否详细解释一下您希望得到的结果是什么?您在每次通过循环时都在重新创建 modelarray 值,因此它总是有 31 个值(原来的 30 个零,加上一个附加值)。您是否想用新的值替换零值?您稍后的 map 调用将忽略任何附加值,因为当它给出的最短的可迭代对象用完时它会停止映射。最后一个问题:您是否考虑过使用numpy 而不是arraynumpy 专为数值计算而设计。
  • 感谢您接受我的回答,请查看我在此处发布的额外代码。看起来你来自 Java 或 C# 之类的东西,所有东西都必须是一个类。静态方法在 Python 中很少使用,因为我们有一流的函数。另外,如果你在做科学类的东西,看看 NumPy 让你的生活变得多么容易。

标签: python arrays


【解决方案1】:

你的代码有问题:

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 具有一流的函数,因此您可以编写一个执行此操作的函数,或者像我在这里所做的那样,只是将代码编写为直接脚本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-20
    相关资源
    最近更新 更多