У меня есть две матрицы, где переменными являются столбцы, и обе матрицы имеют одинаковое количество выборок.Память эффективные способы вычисления больших корреляционных матриц?
Одна матрица 800 на 200, а другой 800 по 100000. Я хочу, чтобы вычислить матрицу корреляции между столбцами этих матриц, поэтому я попытался это:
import numpy as np
def matcor(x, y):
xc = x.shape[1]
return np.corrcoef(x, y, rowvar=False)[xc:, :xc]
xy_cor = matcor(X, Y)
Однако это заканчивается беря большой объем памяти, я получаю ошибку памяти при использовании около 64 ГБ используемой памяти, и это может закончиться тем, что заняло больше места. Есть ли эффективный способ памяти для вычисления этого?
Что вы пытаетесь достичь? Ваша проблема имеет 100200 переменных, поэтому матрица корреляции будет 100200 x 100200. Вас интересует только соотношение между первым и вторым набором переменных (что приведет к результату 200 x 100000)? –
из моего понимания, полная возвращаемая матрица имеет следующий вид: '' 'xx | xy yx | yy '' ' так что я хочу только' yx' или 'xy', что будет' yx.T' – UberStuper