そんなある日を過ごしていると、何が起こっているのか頭を悩ませることができません。X、Y、Z座標の配列(Numpy配列)から2Dヒストグラムを生成するツールがあります(Zはその時点では重要ではありません)。さらに計算できるように、結果を正規化する必要があります。ただし、normed = Trueコマンドを使用する場合、配列の合計は常に0.000006前後になります。
ヒストグラム全体を正規化しようとしているので、すべての配列要素の合計は1になります。normedをFalseに設定すると、ビン内のサンプル数が正しく返されますが、これは明らかに正規化されていません。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
このコードを2つの配列に対して実行し、2つの異なるヒストグラムを生成します。それぞれのprintステートメント:
0.000006250000000000000299510850
0.000006250000000000002840609692
誰かが私がどこで間違っているのかアドバイスできますか?助けてくれてありがとう!