python - 如何从Python中的协方差矩阵获取子协方差

标签 python pandas numpy covariance covariance-matrix

我在 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

有什么函数可以选择这个子集吗?

谢谢!

最佳答案

如果你的协方差矩阵是这样的 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(例如,对于某些包含列 'a'、'b 的数据帧 df,通过 cov = df.cov() 获得', 'c', ...),要获取 'a''c' 的子集,您可以执行以下操作:

cov.loc[['a','c'], ['a','c']]

关于python - 如何从Python中的协方差矩阵获取子协方差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60534625/

相关文章:

python - 如何在可等待的子类中使用 super()?

python - 使用 factory_boy 和 Authtools 的 Django-Python Django 登录测试失败

python - 在 pandas 数据框中删除特定条件下的值

Python Pandas : How do I return members of groupby

python - 将多嵌套的 dict/json 加载到 pandas 中

python - 具有周期性边界条件的数据的直方图

python - Pycharm找不到Thrift ttypes文件

python - 使用 pandas 将不平衡面板聚合到时间序列

python - 当 inf 存在时, np.percentile 返回与 np.median 不同的中位数

Python - 无法检测面部和眼睛?