numpy.corrcoef() 对返回值的疑问

one*_*alf 2 numpy correlation python-3.x pearson-correlation

我需要两个矩阵 X,Y 之间的皮尔逊相关系数。如果我运行代码corr=numpy.corrcoef(X,Y)我的输出是一个具有相关系数的矩阵。但是我需要一个值来表示两个矩阵之间的相关性。

我刚刚在 kennytm 的答案中看到,要拥有一个值,我应该写numpy.corrcoef(X,Y)[1,0]

这个解决方案有效,但我不明白方括号内的数字意味着什么,也不明白为什么将它们相加后我会得到一个值。

我将 1 和 0 解释为系数的限制,但是矩阵内的所有系数会发生什么情况?对它们进行什么类型的计算以获得单个值?例如,如果我更改方括号内的数字[1,-1]相关性、反相关性),则更改的值corr会导致我很困惑应该在括号内使用哪些数字。

b-f*_*-fg 5

numpy.corrcoef返回包含每对行的相关系数的矩阵。例如,numpy.corrcoef(A,B) forA.shape=(3,3)B.shape=(3,3)将返回一个(6,6)矩阵,因为有 36 行组合。A[1],B[1]请注意,它是一个对称矩阵,因为它返回(例如) (index [1,4])和B[1],A[1](index )的相关性[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
Run Code Online (Sandbox Code Playgroud)

如果您想要二维相关性(如图像之间的相关性),请展平二维数组,以便每个数组获得一行。然后,该相关矩阵的元素[0,1][1,0]将是二维数组如何彼此完全相关。

print(np.corrcoef(A.flatten(), B.flatten())[0,1])
Run Code Online (Sandbox Code Playgroud)