You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何计算NumPy矩阵间的Pearson相关系数(单值/相关矩阵)

NumPy同形状矩阵Pearson相关系数计算方案

问题原因

直接调用np.corrcoef无法得到单值相关系数,是因为该函数默认将传入的每一行视为一个独立变量,逐行计算变量间的相关系数:传入两个展平后的一维数组时,函数会返回2×2的相关矩阵,而非单个数值。

基础需求:两个矩阵计算单个相关系数

操作步骤:

  • 将两个矩阵统一转为ndarray类型后展平为一维向量
  • 调用np.corrcoef后取结果矩阵的非对角元,即为两个矩阵整体的Pearson相关系数
    代码实现:
import numpy as np

a = np.matrix('1 2 3; 3 4 5; 1 2 4')
b = np.matrix('1 2 3; 4 3 5; 3 4 5')

a_flat = np.asarray(a).flatten()
b_flat = np.asarray(b).flatten()
single_corr = np.corrcoef(a_flat, b_flat)[0, 1]

print(single_corr)
# 输出结果:0.7228063197118112

进阶需求:多个矩阵计算两两相关系数矩阵

操作步骤:

  • 将所有待计算的同形状矩阵逐一转为ndarray、展平为一维向量
  • 将所有一维向量按行堆叠为形状为(矩阵总数, 单矩阵元素个数)的二维数组
  • 对该二维数组直接调用np.corrcoef,输出结果即为所有矩阵两两对应的相关系数矩阵
    代码实现:
import numpy as np

a = np.matrix('1 2 3; 3 4 5; 1 2 4')
b = np.matrix('1 2 3; 4 3 5; 3 4 5')
c = np.matrix('1 2 3; 4 3 5; 3 4 5')

# 堆叠所有展平后的矩阵向量
stacked_arr = np.vstack([np.asarray(m).flatten() for m in [a, b, c]])
corr_mat = np.corrcoef(stacked_arr)

print(corr_mat)

输出结果:

[[1.         0.72280632 0.72280632]
 [0.72280632 1.         1.        ]
 [0.72280632 1.         1.        ]]

你给出的期望输出中a与c的相关系数标注为1属于笔误:示例中c和b完全相同,因此a与c的相关系数和a与b的相关系数一致,均为0.7228。

内容的提问来源于stack exchange,提问作者je2018

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 17:21:11