gpt4 book ai didi

python - 相关矩阵的滚动平均值

转载 作者:太空宇宙 更新时间:2023-11-04 02:46:51 24 4
gpt4 key购买 nike

我必须计算相关矩阵的滚动平均值。我这样做了

df_corr = df.rolling(window=3).corr()

但现在我想要拥有

    2017-06-05 00:00:00+02:00 NaN

2017-06-06 00:00:00+02:00 NaN

2017-06-07 00:00:00+02:00 0.86
...

我在哪里计算右上角矩阵的平均值(不包括对角线)。

enter image description here

enter image description here

最佳答案

这里您需要对每个日期的相关矩阵应用掩码,如下所示:

enter image description here

您可以使用 numpy.triu_indices使用参数 k=1。这将返回 (n, m) 数组的上三角索引;设置 k=1 忽略对角线。所以,要创建一个面具:

import numpy as np
mask = np.triu_indices(df_corr.shape[1], k=1)
# .shape[1] = 4; each correl. matrix is 4x4

现在计算每个周期的平均值,忽略屏蔽值:

import pandas as pd
dates = df_corr.index.get_level_values(0)
avgs = [df_corr.loc[date].values[mask].mean()
for date in dates]
s = pd.Series(avgs, index=dates) # may want to dropna

print(s.tail())
Date
2017-07-03 0.72991
2017-07-04 0.73963
2017-07-04 0.73963
2017-07-04 0.73963
2017-07-04 0.73963
dtype: float64

要手动确认以上内容,您可以检查:

df_corr.loc['2017-07-04'].values[mask]
Out[108]:
array([ 0.72585007, 0.93792149, 0.79828102, 0.4422102 , 0.99371595,
0.53982374])

df_corr.loc['2017-07-04'].values[mask].mean()
Out[109]: 0.73963374659063508

关于python - 相关矩阵的滚动平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44914845/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com