我正在寻找一种计算两个网格化时间序列相关性的方法。两者都具有相同的形状(432,55,144),即(时间步长,纬度,经度)。正如你在下面的图片中看到的那样,我已经成功使用了它并得到了一个二维数组,所有相关系数都是:
corrvalue = []
if data1.shape==data2.shape:
corrcoefMatrix = [[0 for i in range(len(longitudes))] for j in range(len(latitudes))]
for x in range(len(latitudes)):
for y in range(len(longitudes)):
corrvalue = np.corrcoef(data1[:,x,y],data2[:,x,y])
corrcoefMatrix[x][y] = corrvalue[0,1]
corrcoefMatrix = np.squeeze(np.asarray(corrcoefMatrix))
然而,有一些NAN导致白色缺失值斑点。即使432长时间序列中只有一个缺失值,相关系数也是NAN。根据{{3}}大熊猫似乎是最好的选择。但是,它只接受二维数组,因此我通过使用来自this post的Jarads答案来转换我的数据
df1 = pd.DataFrame([list(l) for l in data1]).stack().apply(pd.Series).reset_index(0,drop=True)
df2 = pd.DataFrame([list(l) for l in data2]).stack().apply(pd.Series).reset_index(0,drop=True)
并使用df.corrwith(df2)
。这给了我一个144维长阵列,而不是我想要的55x144阵列。必须有一个相当简单的方法,因为这种与缺失值的相关性经常使用,但它没有很好地记录,或者我找不到它。