我想绘制一个2D直方图,每行标准化。我正在使用以下代码:
H, xedges, yedges = np.histogram2d(charged_zgs, zgs, weights=prescales, normed=1, range=[[0, 0.5], [0, 0.5]], bins=25)
Hmasked = np.ma.masked_where(H==0,H) # Mask pixels with a value of zero
plt.pcolormesh(xedges,yedges,Hmasked)
cbar = plt.colorbar()
cbar.ax.set_ylabel('Counts')
plt.show()
但是,normed=1
位使得双积分为1,而我希望每个行都被规范化。
我以为我可以使用一个元组列表作为权重,我可以手动规范化,但后来意识到参数权重必须是一维列表。
答案 0 :(得分:1)
您可以使用keepdims=True
H_norm_rows = H / H.max(axis=1, keepdims=True)
答案 1 :(得分:0)
如果要标准化每一行,可以使用:
H_norm_rows = (H.T/np.sum(H,axis=1)).T