有一个这样的日子,我无法理解正在发生的事情。我有一个工具,可以从 X、Y、Z 坐标的数组(Numpy 数组)生成 2D 直方图(此时 Z 并不重要)。我需要对结果进行归一化,以便进行进一步的计算。但是,当使用 normed=True 命令时,数组的总和总是在 0.000006 左右。
我希望对整个直方图进行归一化,因此所有数组元素加起来为 1。将 normed 设置为 False 会正确返回 bin 中的样本数,但显然这不是归一化的。我已经用从 3k 元素一直到 30k 的数组对其进行了测试,但仍然是同样的问题。作为记录,我的数据包括所有 3 个轴上的负坐标。
代码如下:
def histogrammer(coords): # coords is a 3D numpy array
H, xedges, yedges = np.histogram2d(coords[:,0], coords[:,1], bins=(50, 50), range=([-10000.0,10000.0],[-10000.0,10000.0]), normed=True)
H.shape, xedges.shape, yedges.shape
extent = [yedges[0], yedges[-1], xedges[-1], xedges[0]]
global displayHistograms
if displayHistograms == True:
print('Displaying:')
plt.imshow(H, extent=extent, interpolation='nearest')
plt.colorbar()
plt.show()
print('{0:.30f}'.format(np.sum(H))) # Debug normalisation
return H
我为两个数组运行此代码,生成两个不同的直方图。每个的打印语句:
0.000006250000000000000299510850
0.000006250000000000002840609692
谁能告诉我哪里出错了?提前感谢您的帮助!