numpy.corrcoef
возвращает матрицу, содержащую коэффициент корреляции для каждой пары строк. Так, например, numpy.corrcoef(A,B)
для A.shape=(3,3)
и B.shape=(3,3)
вернет матрицу (6,6)
, поскольку существует 36 комбинаций строк. Обратите внимание, что это матрица симметрии c, поскольку она возвращает обе корреляции для (например) A[1],B[1]
(индекс [1,4]
) и B[1],A[1]
(индекс [4,1]
). Когда у вас есть два одномерных массива, вы получаете матрицу (2,2)
: корреляцию первого массива с самим собой [0,0]
, корреляцию первого массива со вторым массивом [0,1]
, корреляцию второго массива с первый массив [1,0]
и корреляция второго массива с самим собой [1,1]
.
import numpy as np
A = np.random.randint(low=0, high=99, size=(3,3))
B = np.random.randint(low=0, high=99, size=(3,3))
C = np.corrcoef(A,B)
print(C[1,4]==np.corrcoef(A[1],B[1])[0,1]) # True
Если вы хотите двумерную корреляцию (например, корреляцию между изображениями), сгладьте двумерные массивы, Таким образом, вы получаете одну строку для каждого массива. Тогда элемент [0,1]
или [1,0]
этой корреляционной матрицы будет таким, каким образом двумерные массивы полностью коррелируют друг с другом.
print(np.corrcoef(A.flatten(), B.flatten())[0,1])