У меня есть два больших двумерных массива A и B (каждый массив имеет размеры (18000,18000)). Я хочу вычислить корреляцию Пирсона между соответствующими столбцами двух массивов (т.е. наивно вычислить
Код: Выделить всё
corr_vec = [np.corrcoef(A[:, i], B[:, i])[0,1] for i in range(A.shape[0])]
Наивный цикл for, конечно, очень медленный. Я попробовал использовать встроенную парную функцию np.corrcoef() и получить нужные результаты, извлекая часть, описывающую соответствующие столбцы двух массивов.
Код: Выделить всё
filter_index = A.shape[0]
corr_vec = np.corrcoef(A, B, rowvar = False)[:filter_index, filter_index:].diagonal()
Однако np.corrcoef по-прежнему вычисляет все возможные попарные корреляции столбцов внутри A, столбцов внутри B и всех других комбинаций столбцов между A и B, в то время как мне просто нужны соответствующие позиции столбцы A и B. Есть ли эффективный способ решения этой задачи?
Подробнее здесь:
https://stackoverflow.com/questions/783 ... -columns-o