有简单的直方图功能吗?

drj*_*rm3 0 python matlab histogram

对于数据diffs07diffs14,在Matlab我可以通过简单地利用获得的数据分级的X和Y坐标:

[ys07, xs07] = hist(-log10(diffs07), 250);
[ys14, xs14] = hist(-log10(diffs14), 250);
Run Code Online (Sandbox Code Playgroud)

Python,但是,我无法找到一个简单的方法,所以我使用:

xs_diffs = np.linspace(0, 17, 250)
dx = xs_diffs[1]-xs_diffs[2]
ys07 = []
ys14 = []
for x in xs_diffs:
    ys07.append( len( [ ty for ty in diffs07 if (-np.log10(ty)-dx/2.0 < x and -np.log10(ty) < x+dx/2.0) ] ) ) 
    ys14.append( len( [ ty for ty in diffs14 if (-np.log10(ty)-dx/2.0 < x and -np.log10(ty) < x+dx/2.0) ] ) ) 

plt.plot(xs_diffs, ys07, 'r.', xs_diffs, ys14, 'b.')
plt.show()
Run Code Online (Sandbox Code Playgroud)

但与Matlab代码相比,这需要相当长的时间.有这么简单(而且速度更快!)的方式Python吗?

Dav*_*son 5

hist, bin_edges = np.histogram(diffs07,bins=250)
Run Code Online (Sandbox Code Playgroud)

用于自动选择箱(Matlab相当于你的第一个语句).或者,

hist, bin_edges = np.histogram(diffs07,bins=np.linspace(0,17,250))
Run Code Online (Sandbox Code Playgroud)

如果要根据初始尝试指定使用的箱柜范围,则应使用此选项.

Matplotlib plt.hist对立即绘图非常有帮助,同样可以选择自动或设置箱.