绘制空2D histogram时出现中心意外点位问题咨询
2D直方图出现单点亮斑的成因
- 你提供的测试代码中,所有x、y样本值均为0,调用
np.histogram2d统计时,10000个样本会全部落入对应0值的同一个bin中,其余bin的统计值均为0,渲染后就会呈现出单个高亮像素点,这是统计逻辑的正常结果,不属于代码bug。 - 经过高斯卷积处理后,单点的能量会向周围扩散,因此第二张子图会呈现出模糊的圆形亮斑,和观测结果完全吻合。
验证方法
可以通过打印统计矩阵的极值和对应位置确认问题:
print(np.max(heatmap)) # 输出为10000,对应全部样本的总计数 print(np.where(heatmap == np.max(heatmap))) # 输出的坐标即为亮斑对应的bin位置
生成空2D直方图的方案
如果需要得到所有bin计数均为0的空直方图,需要让所有输入样本落在设置的统计范围之外:
# 避免使用max作为变量名,防止覆盖Python内置max()函数 bin_count = 100 x = np.full(10000, -1) y = np.full(10000, -1) # 显式指定统计范围为[0,1],所有值为-1的样本都不会被纳入统计 heatmap, xAxis, yAxis = np.histogram2d(x, y, bins=bin_count, range=[[0, 1], [0, 1]])
注意事项
- 不要用Python内置函数名(如
max、min、list等)作为自定义变量名,避免后续调用内置函数时出现异常。 - 你提供的示例代码中
sigma变量未提前定义,直接运行会抛出未定义变量错误,执行前需要先完成赋值,例如sigma = 2。
内容的提问来源于stack exchange,提问作者Ihowa Onaro
相关产品推荐
相关产品推荐

