繁体   English   中英

如何在python中附加多个时间序列相关性列表?

[英]how to append more than one list of time series correlation in python?

我想在两个时间序列之间建立关联。 我使用np.correcoef获取相关性作为列表。 现在我介绍了滞后假设3,如何为3个不同的滞后保存3个不同的列表。

我试过了

 for k in range(0,4,1):
      corr_k= [] 
      corr_k.append( np.corrcoef ( T[(365-k):(730-k)] ,T[365:730]) )

我希望我的结果分别为corr_0,corr_1 ... ...但是我只得到了corr_k。 在此步骤之后,我需要为每个k值制作邻接矩阵。 我正在使用netCDF文件作为m数据,T是温度。 任何想法如何做到这一点? 谢谢。

用最少的示例进行编辑

import numpy as np
T = np.random.rand(100) #defines a dummy T with size 100
corr = {}
for k in range(4):
   corr[k] = np.corrcoef(T[50-k:100-k],T[50:100])

返回包含数组的字典corr 例如 :

corr[0]
> array([[1., 1.],
       [1., 1.]])

如果这不适用于您的情况,则问题可能出在corrcoef ,而不是“附加”部分!


用DICT编辑

当您在循环中要求corr_k时,python无法知道您希望k为数字。 因此,它认为您的变量名是corr_k而不是corr_0 ,依此类推。 这是充满希望的,想一想噩梦,如果python自己更改了所有k字符! 因此,要指定随循环索引而变化的变量名,请使用字典(如本答案所示 )并将列表存储在其中:

corr = {}
 for k in range(4):
      corr[k] = np.corrcoef ( T[(365-k):(730-k)] ,T[365:730] ) 

然后,您将获得以下输出: corr[0]corr[1]corr[2]corr[3]


由于这里没有T ,因此很难测试您的代码,但是作为第一步,我发现对于每个步骤,您都在定义corr_k=[] ,因此覆盖了列表而不是附加列表。 尝试:

corr_k= [] 
for k in range(4):
      corr_k.append( np.corrcoef ( T[(365-k):(730-k)] ,T[365:730]) )

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM