1

私の問題を公開させてください:

Python と Numpy を使用してソフトウェアを作成しました。X と Y という名前の 2 つの numpy 配列が生成されます。

この値は関数として関連付けられています: Y = f(X)

X 値は区間 [0;1] に属します。

numpy.histogram を使用すると、この間隔で定義済みの等間隔のビンに X 値をビニングできます。

私がやりたいのは、「for」ループを実行せずに、各ビンに対応する Y 値を合計することです。

ご回答ありがとうございます。

4

1 に答える 1

2

y 値が対応する位置にあると仮定すると、つまり、y[i] = f(x[i])を使用numpy.digitizeして x 値が属するビンのインデックスを見つけ、それらのインデックスを使用して対応する y 値を合計できます。

例からnumpy(値が 内にないことを無視してください[0; 1]):

>>> x = np.array([0.2, 6.4, 3.0, 1.6])
>>> bins = np.array([0.0, 1.0, 2.5, 4.0, 10.0])
>>> inds = np.digitize(x, bins)
>>> inds
array([1, 4, 3, 2])

次に、y の値を合計します。

>>> aggregate = [y[inds == i].sum() for i in np.unique(inds)]

自分でビンを作成するのに苦労している場合は、 を見てくださいnumpy.linspace

numpy.linspace(0, 1, num=50, endpoint=True)
于 2014-05-11T15:28:52.810 に答える