我有三个矩阵A B和C.我想找出哪个矩阵(B& C)与矩阵A具有最佳的互相关系数。
A=np.array([[1, 2, 4],[3, 4, 5],[1, 4, 5]])
B=np.array([[1, 1, 1], [1, 2, 4],[1, 4, 5]])
C=np.array([[1, 2, 4], [1, 1, 1],[1, 4, 5]])
scipy.correlate2d和numpy.corrcoef正在给出matrice作为输出。我只需要单个相关系数值,这样我就可以找到更相似的矩阵 提前感谢您的回答。
答案 0 :(得分:2)
根据this answer,您可以对输入矩阵进行矢量化,并根据矢量数据计算相关系数:
import numpy as np
A = np.array([[1, 2, 4], [3, 4, 5], [1, 4, 5]])
B = np.array([[1, 1, 1], [1, 2, 4], [1, 4, 5]])
C = np.array([[1, 2, 4], [1, 1, 1], [1, 4, 5]])
CC_AB = np.corrcoef(A.ravel(), B.ravel())
CC_AC = np.corrcoef(A.ravel(), C.ravel())
print('Correlation between A and B:', CC_AB[0, 1])
print('Correlation between A and C:', CC_AC[0, 1])
如您所见,np.corrcoef()
的输出是一个2 x 2对称矩阵,其对角线上有一个(自相关)。您感兴趣的相关系数是非对角线的。在您的情况下,结果是:
Correlation between A and B: 0.7576538541439333
Correlation between A and C: 0.5141222581690976
答案 1 :(得分:1)
您正在寻找输出的max和argmax:
corr=scipy.correlate2d(A,B)
maxCorr=corr.max()
indexmaxCorr=np.argmax(corr)
这是因为相关基本上是一个卷积,然后你有不同的相似值"移动"。