Ran*_*y42 5 python matlab numpy
我已经阅读了这个和这个,以及一些像这样的相关 SO 问题。还是想不出解决办法。
我尝试在 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
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
我当然可以编写自己的函数,但是如果有内置的东西,我会尽量避免重新发明轮子。
手动计算 bin-center:
>>> 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])
Run Code Online (Sandbox Code Playgroud)
或者更容易使用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])
Run Code Online (Sandbox Code Playgroud)