numpy.corrcoef() 对 return 值的怀疑

numpy.corrcoef() doubts about return value

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

我刚刚在这个 kennytm 的 answer 上看到,要获得一个值,我应该写成 numpy.corrcoef(X,Y)[1,0]

这个解决方案有效,但我不明白方括号内的数字是什么意思,也不知道为什么要添加它们,结果只有一个值。

我将 1 和 0 解释为系数的极限,但矩阵内的所有系数发生了什么变化? 对它们进行什么类型的计算以获得单个值? 如果我更改方括号内的数字,例如 [1,-1](correlation, anticorrelation),corr 的值会发生变化,所以我很困惑我应该在方括号内使用哪些数字。

numpy.corrcoef returns 包含每对行的相关系数的矩阵。因此,例如,numpy.corrcoef(A,B) for A.shape=(3,3) and B.shape=(3,3) will return a (6,6) matrix 因为有 36 行组合。请注意,它是一个对称矩阵,因为它 return 具有(例如)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])