5

次のコードを使用して、配列を16個のビンにデジタル化します。

numpy.digitize(array, bins=numpy.histogram(array, bins=16)[1])

ビンが16個あるので、出力は[1、16]の範囲にあると思います。ただし、返される配列の値の1つは17です。これはどのように説明できますか?

4

3 に答える 3

8

これは実際に文書化された動作ですnumpy.digitize()

i返される各インデックスは、が単調に増加しているbins[i-1] <= x < bins[i]場合 bins、またはが単調に減少しているbins[i-1] > x >= bins[i]場合 です。binsの値xがの範囲を超えている場合bins0またはlen(bins)必要に応じて返されます。

したがって、あなたの場合、017有効な戻り値でもあります(によって返されるbin配列の長さnumpy.histogram()が長さであることに注意してください17)。によって返されるビンは、までの範囲をnumpy.histogram()カバーします。ドキュメントに記載されている条件は、が最初のビンに属し、最後のビンの外側にあることを示しています。そのため、出力には含まれていませんが、17は含まれています。array.min()array.max()array.min()array.max()0

于 2010-12-04T18:48:02.573 に答える
2

numpy.histogram()ビンエッジの配列を生成します。その中にはがあります(number of bins)+1

于 2010-12-04T18:47:15.403 に答える
1

numpyバージョン1.8では、numpy.digitizeで間隔を閉じるか開くかを選択するオプションがあります。以下は例です(http://docs.scipy.org/doc/numpy/reference/generated/numpy.digitize.htmlからコピー)

x = np.array([1.2、10.0、12.4、15.5、20.])

bins = np.array([0,5,10,15,20])

np.digitize(x、bins、right = True

array([1、2、3、4、4])

于 2014-10-11T18:54:59.607 に答える