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

为DataFrame指定行生成热力图:基于智能体距离差值的100×100矩阵

实现指定行的智能体距离差值热力图

没问题,这需求很清晰,咱们一步步来实现:

1. 提取指定行的智能体距离数据

首先,你需要从DataFrame中提取目标时间(或指定行)对应的id0到id99列的数据。假设你想选择Time=500的那行,可以这样做:

import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt

# 假设你的DataFrame名为df
target_time = 500  # 替换成你需要的目标时间
# 提取目标行的id列数据,转成一维数组
selected_data = df.loc[df['Time'] == target_time, 'id0':'id99'].values.flatten()

如果是按行索引(比如第1000行,注意Python是0索引,所以要减1),可以改用iloc:

selected_row_index = 999  # 对应第1000行
selected_data = df.iloc[selected_row_index, 1:].values.flatten()  # 第1列是Time,所以从索引1开始取

2. 计算id_i - id_j的差值矩阵

利用numpy的广播特性,我们可以快速生成100×100的差值矩阵:

# 生成差值矩阵,shape为(100,100),其中matrix[i,j] = id_i - id_j
diff_matrix = selected_data[:, np.newaxis] - selected_data

这里的广播原理是把一维数组selected_data变成(100,1)的列向量,然后和原一维数组(视为(1,100)的行向量)做减法,自动扩展成100×100的矩阵,完美对应每对智能体的差值。

3. 绘制热力图

用seaborn的heatmap函数可以直观展示这个差值矩阵:

plt.figure(figsize=(12, 10))  # 设置图的大小
# 绘制热力图,cmap选冷暖色调来区分正负差值
sns.heatmap(diff_matrix, 
            cmap='coolwarm', 
            xticklabels=[f'id{j}' for j in range(100)], 
            yticklabels=[f'id{i}' for i in range(100)],
            annot=False)  # 如果需要显示具体数值,可以把annot设为True,但100×100会很挤

# 设置标题和轴标签
plt.title(f'Distance Difference (id_i - id_j) at Time {target_time}', fontsize=14)
plt.xlabel('id_j', fontsize=12)
plt.ylabel('id_i', fontsize=12)

plt.tight_layout()  # 自动调整布局
plt.show()

额外提示

  • 如果你的id列命名不是严格从id0到id99(比如有缺失或命名不规则),可以用df.filter(regex='^id')来提取所有以id开头的列,确保不会漏选。
  • 如果你觉得坐标轴的标签太密集,可以通过xticklabels和yticklabels参数设置显示间隔,比如xticklabels=[f'id{j}' for j in range(0,100,5)],只显示每5个id的标签。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:00:25