
A.4
ufunc
の使い方:応用編
509
groupby
操作を行うメソッドです。
reduceat
には、配列をどのように分割して値を集計するかを表す、
一連の「ビンの境界値(
bin edges
)」を引数として指定します。次の例では、
0
から
9
までの配列に対し、
3
つのビンを設定し、それぞれのスライスごとに和を求めています。
In [131]: arr = np.arange(10)
In [132]: np.add.reduceat(arr, [0, 5, 8])
Out[132]: array([10, 18, 17])
境界を
[0, 5, 8]
と指定しているため、結果は、
arr[0:5]
、
arr[5:8]
、
arr[8:]
に対する集計(ここ
では合計)となります。他のメソッドと同様、軸を引数で指定できます。
In [133]: arr = np.multiply.outer(np.arange(4), np.arange(5))
In [134]: arr
Out[134]:
array([[ 0, 0, 0, 0, 0],
[ 0, 1, 2, 3, 4],
[ 0, 2, 4, 6, 8],
[ 0, 3, 6, 9, 12]])
In [135]: np.add.reduceat(arr, [0, 2, 4], axis=1)
Out[135]:
array([[ 0, 0, 0],
[ 1, 5, 4],
[ 2, 10, 8],
[ 3, 15, 12]])
ufunc
メソッドの一部を表A-2