如何从python中的协方差矩阵中获得子协方差

问题描述 投票:0回答:1

我在python中有一个协方差矩阵(作为pandas DataFrame,如下所示:

    a   b   c    
a   1   2   3    
b   2   10  4    
c   3   4   100

而且我想动态地只选择矩阵协方差的一个子集。例如,A和C的子集看起来像

    a   c
a   1   3    
c   3   100

是否有任何功能可以选择此子集?

谢谢!

python numpy covariance covariance-matrix
1个回答
1
投票

如果您的协方差矩阵是一个像这样的numpy数组:

cov = np.array([[1, 2,  3],
                [2, 10, 4],
                [3, 4, 100]])

然后您可以通过advanced indexing获得所需的子矩阵:

subset = [0, 2]  # a, c

cov[np.ix_(subset, subset)]

# array([[  1,   3],
#        [  3, 100]])

编辑

如果协方差矩阵是pandas DataFrame(例如,对于具有cov = df.cov()列的某些数据帧df'a', 'b', 'c', ...的形式获得,则要获取'a''c'的子集,您可以执行以下操作:

cov.loc[['a','c'], ['a','c']]
© www.soinside.com 2019 - 2024. All rights reserved.