匹配Matlab hist()与Numpy直方图()

时间:2017-01-26 08:45:40

标签: python matlab numpy

我已阅读thisthis,以及一些相关的SO问题,例如this。仍然无法找到解决方案。

我尝试在Matlab中复制hist()函数,得到不同维度的结果,导致内部的值不同。我知道bin-center vs bin-edge,我仍然希望匹配Matlab结果。

Matlab的:

a = [1,2,3];
[w,t] = hist(a);
w = [1, 0, 0, 0, 1, 0, 0, 0, 0, 1]
t = [1.1, 1.3, 1.5, 1.7, 1.9, 2.1, 2.3, 2.5, 2.7, 2.9]
length(t) = 10

的Python:

a = [1,2,3]
w,t = histogram(a)
w = [1, 0, 0, 0, 0, 1, 0, 0, 0, 1]
t = [1.0, 1.2, 1.4, 1.6, 1.8, 2.0, 2.2, 2.4, 2.6, 2.8, 3.0]
len(t) = 11

我当然可以编写自己的函数代码,但如果内置了某些内容,我会尽量避免重新发明轮子。

1 个答案:

答案 0 :(得分:0)

手动计算bin-centers:

>>> t = np.array([1.0, 1.2, 1.4, 1.6, 1.8, 2.0, 2.2, 2.4, 2.6, 2.8, 3.0])
>>> t[:-1] + ((t[1:] - t[:-1])/2)
array([ 1.1,  1.3,  1.5,  1.7,  1.9,  2.1,  2.3,  2.5,  2.7,  2.9])
使用np.diff

甚至更轻松:

>>> t[:-1] + np.diff(t)/2
array([ 1.1,  1.3,  1.5,  1.7,  1.9,  2.1,  2.3,  2.5,  2.7,  2.9])