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

Python自动生成多列表两两函数值矩阵及热力图的方法

解决方案

你不需要手动逐个填写矩阵元素,现有Python库可以直接实现这类两两组合计算的矩阵生成,同时支持直接对接热力图绘制,具体方法如下:

1 自动生成两两计算矩阵

1.1 常规统计量计算(以皮尔逊相关系数为例)

如果是计算皮尔逊、斯皮尔曼这类常规相关系数,直接用pandas内置的.corr()方法即可,自动完成所有两两组合计算,对角线默认返回变量与自身的计算值(皮尔逊相关系数下恰好为1,和你手写的矩阵逻辑完全一致)。

import numpy as np
import pandas as pd
from scipy.stats import pearsonr
import seaborn as sns
import matplotlib.pyplot as plt

# 原始输入列表
a = [0.4, 0.6, 0.8]
b = [0.3, 0.2, 0.5]
c = [0.1, 0.6, 0.12]

# 整合为DataFrame,每一列对应一个需要参与计算的变量
df = pd.DataFrame({'a': a, 'b': b, 'c': c})

# 一键生成皮尔逊相关矩阵,和你手动编写的矩阵结果完全相同
corr_matrix = df.corr(method='pearson')
print(corr_matrix)

.corr()的method参数还支持直接传入'spearman'、'kendall',快速生成其他类型的相关系数矩阵。

1.2 自定义计算逻辑的通用实现

如果你需要应用的不是内置的相关系数算法,而是任意自定义的两两计算函数,有两种实现方式:

  • 对于满足对称性(即f(x,y) = f(y,x))的计算逻辑,可以直接把自定义函数传入.corr()的method参数:
# 自定义计算函数,输入两个一维数组,返回单个数值结果
def custom_calc(x, y):
    # 这里可以替换成任意你需要的计算逻辑,示例为调用scipy的pearsonr取相关系数值
    return pearsonr(x, y)[0]

# 传入自定义函数生成矩阵
custom_matrix = df.corr(method=custom_calc)
  • 如果你的计算逻辑不满足对称性,或者不想依赖pandas,可以用纯numpy写双重循环实现,适配所有场景:
# 把所有待计算列表整合为二维数组,形状为(变量数量, 单变量样本数)
arr = np.array([a, b, c])
var_count = arr.shape[0]
result_matrix = np.zeros((var_count, var_count))

for i in range(var_count):
    for j in range(var_count):
        # 替换成你需要的任意计算逻辑
        result_matrix[i, j] = pearsonr(arr[i], arr[j])[0]

print(result_matrix)

2 一键绘制热力图

生成矩阵后直接用seaborn的heatmap方法即可绘制热力图,支持自动标注数值、调整配色、固定色阶范围:

plt.figure(figsize=(6, 5))
# annot=True 表示在格子中显示具体数值,cmap指定配色,vmin/vmax固定色阶范围
sns.heatmap(corr_matrix, annot=True, cmap='coolwarm', vmin=-1, vmax=1)
plt.title('Correlation Matrix Heatmap')
plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 09:09:12