2017-01-26 7 views
3

thisthisと、thisのような関連する質問があります。それでも解決策を理解することはできません。Numpyヒストグラム()とのMatlab hist()の一致

私はMatlabでhist()関数を複製しようとしましたが、異なる次元の結果が得られ、内部の値が異なっていました。私はbin-centerと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

私はあなたを助けることはできませんが、ちょうどあなたの注意のためのPythonを知らない:それはです'hist'を使うのはお勧めできません。代わりに' histogram'を使います。 –

+0

@Mikhail_Sam ohh typo、私は "numpyインポートヒストグラムからヒストリ"としてインポートしました。今修正されました。 – nxgtrturbo

答えて

0

手動でビンの中心を計算します。np.diff

>>> 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]) 

またはさらに簡単に:

>>> 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]) 
+0

異なるビン定義のため、Wも異なることに注意してください。 – nxgtrturbo

+0

違いがどこから来るのかわからないため、何かできることがわからない場合。 'numpy.histogram'は"(最も右側にある)半オープンビン "を使用しています。 – MSeifert

関連する問題