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

有没有可以选择这个子集的函数?

谢谢!

4

1 回答 1

4

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

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

然后您可以通过高级索引获得所需的子矩阵:

subset = [0, 2]  # a, c

cov[np.ix_(subset, subset)]

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

编辑

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

cov.loc[['a','c'], ['a','c']]
于 2020-03-04T22:32:23.417 回答