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

1920×1080二维数组分块求均值绘制seaborn热力图出错如何解决

问题原因与解决方案

核心问题点

  • 未预先对像素级显著性数组做网格均值聚合,直接传入1080×1920的原始数组,heatmap默认会逐像素渲染,无法得到单网格单色的效果
  • 坐标轴刻度设置逻辑错误:seaborn heatmap的刻度位置对应输入数组的索引值,直接传入像素尺寸级别的刻度值超出了数组索引范围,才会出现空图
  • 代码存在语法错误:xticks[80,160...] 行缺少赋值等于号

修正实现逻辑

  1. 先对原始显著性数组做80×90网格的均值池化,得到24列(1920/80)×12行(1080/90)的聚合后数组,每个元素对应一个网格的平均显著性
  2. 热力图直接传入聚合后的数组,刻度位置默认对应聚合数组的索引,直接将刻度标签设置为对应的像素坐标即可匹配需求

可运行的修正代码

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

# 模拟原始1080×1920显著性数组
normalized_saliency_map = np.random.random((1080, 1920))

# 步骤1:80×90网格均值聚合
grid_h, grid_w = 90, 80
# 聚合得到12行 × 24列的网格显著性数组
agg_saliency = normalized_saliency_map.reshape(1080//grid_h, grid_h, 1920//grid_w, grid_w).mean(axis=(1,3))

# 步骤2:绘制热力图
plt.figure(figsize=(16,9))
# 刻度标签对应原始像素坐标
xticklabels = range(0, 1920, 80)
yticklabels = range(0, 1080, 90)

ax = sns.heatmap(agg_saliency, 
                 cmap='jet',
                 linewidth=0.5,
                 xticklabels=xticklabels, 
                 yticklabels=yticklabels)
plt.title('Image Saliency Heatmap')
plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 11:09:03