了解两个不同大小的矩阵的 np.corrcoef 的输出
Understanding output of np.corrcoef for two matrices of different sizes
我想计算矩阵 A 的每个 列向量 与每个 列向量[=矩阵 B 的 25=]。
考虑:
vectorsize = 777
A = np.random.rand(vectorsize, 64)
B = np.random.rand(vectorsize, 36)
corr = np.corrcoef(A, B, rowvar=False)
在这种情况下,np.corrcoef
的输出将是一个 100x100 矩阵。这是什么意思?
直觉上我希望得到一个 64x36 矩阵。
如果方法 corrcoef 得到两个数组 x 和 y,它会将它们堆叠起来(如果 rowVar 为 True,则垂直堆叠,如果 rowVar 为 False,则水平堆叠)。
在 source:
if y is not None:
y = array(y, copy=False, ndmin=2, dtype=dtype)
if not rowvar and y.shape[0] != 1:
y = y.T
X = np.vstack((X, y))
在统计术语中,它认为 A 有 64 个变量(在列中,因为 rowVar 是假的),B 有 36 个。将它们堆叠起来可以得到 100 个变量,因此得到 100 x 100 的相关矩阵。
相关矩阵总是对称的(半正定的)。如果您只想要 x 和 y 变量之间的相关性,则它们位于大小为 64 x 36 的非对角线块中:通过切片将其提取。这是输出的结构:
corr(x, x), size 64 by 64 | corr(x, y), size 64 by 36
---------------------------+---------------------------
corr(y, x), size 36 by 64 | corr(y, y), size 36 by 36
与rowvar=False
一样,它计算列之间的相关性。因此,它计算 A
的每一列与其自身和 B
的每一列之间的 Pearson 相关系数。它与连接两个矩阵并计算其列之间的相关性相同,如下所示:
C = np.hstack([A, B]) # C.shape[0] == A.shape[0] == B.shape[0] and C.shape[1] = A.shape[1] + B.shape[1]
corr_C = np.corrcoef(C, rowvar=False)
np.allclose(corr_C, corr) # Returns True
我想计算矩阵 A 的每个 列向量 与每个 列向量[=矩阵 B 的 25=]。
考虑:
vectorsize = 777
A = np.random.rand(vectorsize, 64)
B = np.random.rand(vectorsize, 36)
corr = np.corrcoef(A, B, rowvar=False)
在这种情况下,np.corrcoef
的输出将是一个 100x100 矩阵。这是什么意思?
直觉上我希望得到一个 64x36 矩阵。
如果方法 corrcoef 得到两个数组 x 和 y,它会将它们堆叠起来(如果 rowVar 为 True,则垂直堆叠,如果 rowVar 为 False,则水平堆叠)。 在 source:
if y is not None:
y = array(y, copy=False, ndmin=2, dtype=dtype)
if not rowvar and y.shape[0] != 1:
y = y.T
X = np.vstack((X, y))
在统计术语中,它认为 A 有 64 个变量(在列中,因为 rowVar 是假的),B 有 36 个。将它们堆叠起来可以得到 100 个变量,因此得到 100 x 100 的相关矩阵。
相关矩阵总是对称的(半正定的)。如果您只想要 x 和 y 变量之间的相关性,则它们位于大小为 64 x 36 的非对角线块中:通过切片将其提取。这是输出的结构:
corr(x, x), size 64 by 64 | corr(x, y), size 64 by 36
---------------------------+---------------------------
corr(y, x), size 36 by 64 | corr(y, y), size 36 by 36
与rowvar=False
一样,它计算列之间的相关性。因此,它计算 A
的每一列与其自身和 B
的每一列之间的 Pearson 相关系数。它与连接两个矩阵并计算其列之间的相关性相同,如下所示:
C = np.hstack([A, B]) # C.shape[0] == A.shape[0] == B.shape[0] and C.shape[1] = A.shape[1] + B.shape[1]
corr_C = np.corrcoef(C, rowvar=False)
np.allclose(corr_C, corr) # Returns True