我在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(例如,对于具有cov = df.cov()
列的某些数据帧df
以'a', 'b', 'c', ...
的形式获得,则要获取'a'
和'c'
的子集,您可以执行以下操作:
cov.loc[['a','c'], ['a','c']]