0

您好,我正在尝试获取不同班次的自相关列表。我的代码如下:

thetas = np.array([0.24233997, 0.33467202, 0.35020237, ...])

autocorrelation = []
for shift in range(1,21):
    correlation = np.corrcoef(thetas[:-shift], thetas[shift:])[0,1]
    autocorrelation.append(correlation)

这给了我这个错误:

C:\Users\PC\Anaconda3\lib\site-packages\numpy\lib\function_base.py:3175: RuntimeWarning: Degrees of freedom <= 0 for slice
c = cov(x, y, rowvar)
C:\Users\PC\Anaconda3\lib\site-packages\numpy\lib\function_base.py:3109: RuntimeWarning: divide by zero encountered in double_scalars
c *= 1. / np.float64(fact)
C:\Users\PC\Anaconda3\lib\site-packages\numpy\lib\function_base.py:3109: RuntimeWarning: invalid value encountered in multiply
c *= 1. / np.float64(fact)
C:\Users\PC\Anaconda3\lib\site-packages\numpy\lib\function_base.py:1128: RuntimeWarning: Mean of empty slice.
avg = a.mean(axis)
C:\Users\PC\Anaconda3\lib\site-packages\numpy\core\_methods.py:73: RuntimeWarning: invalid value encountered in true_divide
ret, rcount, out=ret, casting='unsafe', subok=False)

有谁知道如何修复此代码或以其他方式为许多不同的班次创建自相关列表?

4

1 回答 1

1

发生此错误是因为 python 在超出数组范围的索引处获取了一个切片,因此返回了一个空切片,该切片np.corrcoef返回错误。

thetas少于22个元素。

这应该可以修复错误:

...
for shift in range(1,thetas.size-1):
...
于 2018-06-16T14:10:12.893 回答