【发布时间】:2015-10-18 15:58:03
【问题描述】:
我有一个用 numpy 生成的二维直方图:
H, xedges, yedges = np.histogram2d(y, x, weights=mass * (1.0 - pf),
bins=(yrange,xrange))
请注意,我目前正在使用质量函数对垃圾箱进行称重(mass 是一个 numpy 数组,其尺寸与x 和y 相同)。这些 bin 是对数的(通过 xrange = np.logspace(minX, maxX, 100) 生成)。
但是,我真的想通过质量函数对垃圾箱进行加权,但将它们归一化(即除以)每个垃圾箱的面积:例如- 每个垃圾箱都有xrange[i] * yrange[i] 的区域。但是,由于xrange 和yrange 的尺寸与mass、x 和y 的尺寸不同……我不能简单地将标准化放在np.histogram2d 调用中。
如何按每个日志箱中的面积标准化箱数?
作为参考,这里是绘图(我添加了 x 和 y 1D 直方图,我还需要按 bin 的宽度进行归一化,但是一旦我弄清楚如何为 2D 做它应该是类似的) .
仅供参考 - 我使用 matplotlib 生成主要(和轴直方图):
X,Y=np.meshgrid(xrange,yrange)
H = np.log10(H)
masked_array = np.ma.array(H, mask=np.isnan(H)) # mask out all nan, i.e. log10(0.0)
cax = (ax2dhist.pcolormesh(X,Y,masked_array, cmap=cmap, norm=LogNorm(vmin=1,vmax=8)))
【问题讨论】:
标签: python arrays numpy matplotlib