Я пытаюсь сделать нормализованную сумму внешнего произведения матрицы 60000x100. Я хотел бы сделать это с помощью numpy, так как мое решение ограничено циклом python for в понимании списка:
def covariance_over_time(X):
B = np.sum(np.array([np.outer(x, x) for x in X]),axis=0)
B = np.true_divide(B, len(X))
return B
Имейте в виду, что даже это решение работает, оно однопоточное и поэтому очень медленное, когда X имеет 60000 строк и 100 столбцов.
Я пробовал другие подходы, подобные описанным здесь в stackoverflow. Ответ, размещенный в ссылке, работает для небольших матриц, дает мне память после ошибки в несколько секунд. Ты знаешь почему? (Примечание: у меня 6 терабайт оперативной памяти, поэтому маловероятно, что у меня проблема с памятью, поскольку я вообще не вижу роста использования памяти!)