Как я могу получить субковариацию от ковариационной матрицы в python - PullRequest
0 голосов
/ 05 марта 2020

У меня есть ковариационная матрица (как pandas DataFrame) в python следующим образом:

    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

Есть ли какая-либо функция, которая может выбрать это подмножество?

1 Ответ

1 голос
/ 05 марта 2020

Если ваша ковариационная матрица представляет собой массив 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 со столбцами 'a', 'b', 'c', ...), чтобы получить подмножество 'a' и 'c' вы можете сделать следующее:

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