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

如何计算PyTorch二维点集的求和分布热力图网格值?

问题:基于二维PyTorch点张量计算热力图的grid_values

我有一个形状为(10000,2)的PyTorch张量,包含10000个二维点,点的取值范围在-1到1之间(即$x ∈ [-1, 1]^2$)。我希望生成热力图展示这些点的分布,已经写出了部分matplotlib代码:

torch.meshgrid(torch.linspace(-1, 1, 1000), torch.linspace(-1, 1, 1000))
ax.contourf(x_grid, y_grid, grid_values)

但不知道如何计算对应的grid_values,请问如何基于该点张量计算用于展示点分布的grid_values?


解决方案

grid_values本质是二维直方图数据,即统计[-1,1]×[-1,1]平面上每个网格区域内的点数量(或自定义权重求和),可以用PyTorch内置的torch.histogram2d直接计算,步骤如下:

步骤1:拆分点张量的x、y分量

假设你的点张量名为points,先拆分出x和y坐标:

x = points[:, 0]
y = points[:, 1]

步骤2:计算二维直方图(grid_values)

因为要生成1000×1000的网格,所以设置直方图的bin数量为1000,同时指定坐标范围为[-1,1]:

bin_count = 1000
# 生成bin的边界(n个bin需要n+1个边界点)
x_edges = torch.linspace(-1, 1, bin_count + 1)
y_edges = torch.linspace(-1, 1, bin_count + 1)

# 计算直方图,grid_values即为每个网格的点数量
grid_values, _, _ = torch.histogram2d(
    x, y,
    bins=(bin_count, bin_count),
    range=[[-1, 1], [-1, 1]]
)

步骤3:匹配网格与绘图

生成meshgrid时注意使用indexing='xy'(符合matplotlib的坐标逻辑),同时需要将grid_values转置以匹配网格的索引顺序:

x_grid, y_grid = torch.meshgrid(x_edges[:-1], y_edges[:-1], indexing='xy')

# 转置grid_values,确保和x_grid、y_grid的维度对应
ax.contourf(x_grid.numpy(), y_grid.numpy(), grid_values.numpy().T)

完整示例代码

import torch
import matplotlib.pyplot as plt

# 模拟输入点张量(替换为你的实际数据)
points = torch.rand(10000, 2) * 2 - 1  # 生成[-1,1]范围内的随机点

# 拆分坐标
x = points[:, 0]
y = points[:, 1]

# 计算直方图数据
bin_count = 1000
x_edges = torch.linspace(-1, 1, bin_count + 1)
y_edges = torch.linspace(-1, 1, bin_count + 1)
grid_values, _, _ = torch.histogram2d(x, y, bins=(bin_count, bin_count), range=[[-1, 1], [-1, 1]])

# 生成网格并绘图
x_grid, y_grid = torch.meshgrid(x_edges[:-1], y_edges[:-1], indexing='xy')
fig, ax = plt.subplots()
ax.contourf(x_grid.numpy(), y_grid.numpy(), grid_values.numpy().T)
plt.show()

扩展:自定义权重求和

如果需要展示的是点的某个属性的求和分布(而非点数量),可以传入weights参数:

# 假设每个点有一个权重张量weights,形状(10000,)
weights = torch.rand(10000)
grid_values, _, _ = torch.histogram2d(x, y, bins=(bin_count, bin_count), range=[[-1,1], [-1,1]], weights=weights)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 02:20:36