2016-11-12 5 views
2

私はPythonでNumpyを使用して自動ビンサイズのヒストグラムを計算しようとしています。 documentationの私の読書は、私がbins="auto"を渡すことができなければならないことを言いますが、私はそうするとき、私はエラーを取得する:numpy.histogramと "list assignment index out of range"

import sys 
import numpy as np 

print(sys.version) 
# 2.7.10 (default, Oct 23 2015, 19:19:21) 
# [GCC 4.2.1 Compatible Apple LLVM 7.0.0 (clang-700.0.59.5)] 

print(np.version.version) 
# 1.8.0rc1 

print(np.histogram([1, 2, 3, 4], bins='auto')) 
# Traceback (most recent call last): 
# File "/Users/phrogz/Code/histopy/histo.py", line 11, in <module> 
#  print(np.histogram([1, 2, 3, 4], bins='auto')) 
# File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/numpy/lib/function_base.py", line 183, in histogram 
#  if (np.diff(bins) < 0).any(): 
# File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/numpy/lib/function_base.py", line 991, in diff 
#  slice1[axis] = slice(1, None) 
# IndexError: list assignment index out of range# 
# 
# Process finished with exit code 1 

期待どおりに動作しますが、私は、binsのための任意の文字列パラメータと同じ結果を得ますパラメータの整数を指定した場合。私は間違って何をしていますか?また、自動ビンサイズの計算方法を教えてください。

+1

トレースバックを取得したので、これをデバッグできます。外見には自信がありますが、理由は分かりません。 –

答えて

0

問題は、Python 2.7を使ったPyCharmでした(質問の詳細に追加するまでは気づいていなかったsys.version)。私がPyCharmを3.5に切り替えると、期待どおりに動作します。

import sys 
import numpy as np 

print(sys.version) 
# 3.5.2 (default, Oct 11 2016, 05:05:28) 
# [GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.38)] 

print(np.version.version) 
# 1.11.2 

print(np.histogram([1, 2, 3, 4], bins='auto')) 
# (array([1, 1, 2]), array([ 1., 2., 3., 4.])) 
+0

エラーの根本原因は実際には表示されません。 3.5インストールや何かからnumpyが使用されましたか? –

+0

@ivan_pozdeevいいえ。私はPython(PyCharmとpip3)にはかなり新しいです。インタプリタを切り替えると、numpyの別のバージョンが表示されるという回答を編集しました。おそらく、それはより年老いていませんでしたか? – Phrogz

+2

https://docs.scipy.org/doc/numpy-1.8.0/reference/generated/numpy.histogram.html#numpy.histogramによると、 '1.8.0'では' histogram'に ' bins = 10'をデフォルトとし、 '' auto ''を受け付けません。私はそれが例外を提起することを期待するだろうが、明らかにそうではない。たぶんそれは 'rc'だからです。デバッガで実行している場合は、おそらく、欠陥のある行に '10 'が表示されます。あるいは、 '' auto ''が"スカラーのシーケンス "として誤って解釈されている可能性があります。 –

0

問題は、使用しているnumpyのバージョンです。自動機能はnumpyバージョン1.11.0で導入されました。 バージョンラベルは1.8.0 < 1.11.0と混同しているかもしれません。なぜなら、11は1つではなくエルフとして読み込まれなければならないからです。