1
我有一個非常稀疏陣列看起來像:比較兩個陣列具有非常分散的值
Array A: min = -68093253945.0 max=8.54631971208e+13
Array B: min=-1e+15 max = 1.87343e+14
並且還每個陣列將具有以一定的水平濃度例如接近2000年,接近1米,接近0.05等等。
我試圖在濃度方面比較這兩個數組,並且希望以不變的方式對每個數據項進行比較。如果可能的話,我也想要考慮巨大的異常值,並且可能會將bin壓縮到0到1之間或者這種類型。
目的是通過使直方圖:
plt.hist(A,alpha=0.5,label='A') # plt.hist passes it's arguments to np.histogram
ion()
plt.hist(B,alpha=0.5,label='B')
plt.title("Histogram of Values")
plt.legend(loc='upper right')
plt.savefig('valuecomp.png')
我該怎麼辦呢?我已經嘗試:
A = stats.zscore(A)
B = stats.zscore(B)
A = preprocessing.scale(A)
B = preprocessing.scale(B)
A = preprocessing.scale(A, axis=0, with_mean=True, with_std=True, copy=True)
B = preprocessing.scale(B, axis=0, with_mean=True, with_std=True, copy=True)
然後我的直方圖,加入normed=True
,range(0,100)
。所有的方法都給我一個直方圖,其中有一個接近0.0的大塊垂直塊,而不是平滑地分配值。 range(0,100)
看起來不錯,但它忽略了任何值,例如100以外的1m。
也許我需要先從我的數據中刪除異常值,然後再做直方圖?
這是什麼語言?你是否用SciPy使用python?請修改您的標籤。 – ebyrob
@ebyrob完成。這是在python中,我也使用'matplotlib.pyplot'和'sklearn.preprocessing'。 –
對於某些非常量/動態bin-width直方圖,如[this](http://www.astroml.org/user_guide/density_estimation.html#bayesian-blocks-histograms-the-right-way)(來自astroml,也可以在astropy中使用)? – sascha