【问题标题】:How to avoid map object error in this autocorrelation script如何避免此自相关脚本中的地图对象错误
【发布时间】:2017-12-04 16:18:03
【问题描述】:

您好,我想使用这个自相关脚本,我在这里找到了:

https://stackoverflow.com/a/20463466/8238271

import numpy
def acf(series):
    n = len(series)
    data = numpy.asarray(series)
    mean = numpy.mean(data)
    c0 = numpy.sum((data - mean) ** 2) / float(n)

    def r(h):
        acf_lag = ((data[:n - h] - mean) * (data[h:] - mean)).sum() / float(n) / c0
        return round(acf_lag, 3)
    x = numpy.arange(n) # Avoiding lag 0 calculation
    acf_coeffs = map(r, x)
    return acf_coeffs

我正在使用这个 numpy 数组:

a=numpy.array([1, 2, 3,7,2,5,1,6,7,2,1,1,1,6,7,2])

我这样称呼这段代码:

z2=acf(a)
print (z2)

然后终端返回:

<map object at 0x ....>(不知道号码是多少最好不要在这里写)

如何正确调用此函数以实现自相关滞后 1、2、3、4 等?

请帮忙!

【问题讨论】:

    标签: python arrays numpy object mapping


    【解决方案1】:

    我假设您希望返回 list

    为此,请更改此行:

    acf_coeffs = map(r, x)
    

    到这里:

    acf_coeffs = list(map(r, x))
    

    解释:您复制的代码可能是为 Python 2 编写的。map 函数在 Python 3 中已更改为返回 map 对象而不是 list。因此,您将其包装在 list 调用中以获取 list

    【讨论】:

    • 谢谢,工作正常,是否可以将其称为 numpy 数组而不是列表?
    猜你喜欢
    • 2020-11-03
    • 2012-07-06
    • 1970-01-01
    • 2014-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多