2

次を使用して、配列を一連のビンにビン化していnp.digitizeます。

data = np.array([1,5,6,15,25,60])
bins = np.array([ 5, 10, 20, 50])
result = np.digitize(data, bins)
# this fails
print bins[result]

他のすべての値が適合する最後のビンを除いて、ビン内の各値が「以下」と解釈されるという解釈でデータをビンに配置したい。これを行う機能はありますか?この場合、「x <= 5、5 < x <= 10、10 < x <= 20、および 20 < x <= 50 (x > 50 を含む)」となります。numpyでこれを行う簡潔な方法は何ですか?

4

1 に答える 1

4

20 < x <= 50 including x > 50あなたがあなたの最後のビンのために言うとき、あなたは本当に言っていx>20ます. x>20の最後のビンをドロップすることで取得できます50np.digitizeは、デフォルトではなくビンの動作を可能にするパラメータrightを取りますTrue10 < x <= 2010 <= x < 20

>>> data = np.array([1,5,6,15,25,60])
>>> bins = np.array([ 5, 10, 20])
>>> np.digitize(data, bins, right=True)
array([0, 0, 1, 2, 3, 3])
>>> 

3 つの値で定義されていますが、実際には 4 つの interval があるため、コードbins[result]は失敗します。たとえば、65 はインデックス 3 のビンに配置されます。4番目のインターバル。の 4 番目の値が存在しないため、エラーになります。bins(x<=5, 5<x<=10, 10<x<=20, 20<x)bins

于 2013-10-20T21:53:27.080 に答える