np.cumsumは、指定の軸に沿って配列の累積合計を戻す関数です。これと同じものでndarray.cumsumメソッドもあります。このページでは、これらについて解説していきます。
なお累積合計(累積和)というと聴き慣れない人には馴染みが浅いかもしれませんが、様々な状況で使える便利な和です。ここではサンプルコードを見ていくことで、累積和が何かということもわかります。
それでは実際のコードで、このnp.cumsumについて確認していきましょう。
NumPy配列の合計・和を取得する操作まとめ
配列の合計値の操作に関しては、『NumPyの合計・和を取得する関数とメソッドまとめ』ですべて簡潔にまとめています。ぜひご確認ください。
1. 書式
まずは基本的な書き方を確認しましょう。ご確認頂くとおり複数のオプション引数がありますが、基本的にはaxisだけ抑えておけば十分です。
書き方:
np.cumsum(a, axis=None, dtype=None, out=None)
パラメーター:
引数 | 型 | 解説 |
---|---|---|
a | array_like | 配列を渡します。 |
axis* | int | 累積合計を算出する際の次元軸を指定します。デフォルト値(None)の場合は、戻り値は1次元配列になります。 |
dtype* | dtype | 新しく生成する配列のデータ型を指定します。指定しない場合は、元の配列のデータ型を引き継ぎます。 |
out* | ndarray | これを指定すると、指定したアウトプット先の配列を、新しく生成する配列で上書きします。アウトプット先の配列は、新しく生成される配列と同じshapeである必要があります。 |
* はオプション引数であることを示します。 |
戻り値:
累積和を要素とする配列: 新しく生成される配列のshapeは、引数に渡す元の配列と同じです。ただし、axis=None(デフォルト値)の場合、新しい配列は1次元配列になります。 |
一緒に確認したい関数:
ndarray.cumsum(axis=None, dtype=None, out=None)
Notes
np.cumsum()は空の配列を渡すと、そのまま空の配列が返ってきます。
import numpy as np
arr = np.array([])
print(np.cumsum(arr))
2. サンプルコード
それでは、実際のコードを見ながら使い方を確認していきましょう。
1次元配列の場合
np.cumsum()は配列の累積合計を求める関数です。1次元配列を渡すと、累積合計を求めた新しい配列を生成します。以下の配列a を例に見てみましょう。
import numpy as np
rng = np.random.default_rng()
a = rng.integers(0, 11, (5, ))
a
この配列a をnp.cumsum()に渡すと次のようになります。
# 多次元配列の場合も全要素の累積合計を返す
np.cumsum(a)
ndarray.cumsum()メソッドも同様です。
# メソッド
a.cumsum()
多次元配列の場合
多次元配列の場合も、デフォルトでは全要素の累積合計を算出します。以下の一連のコードをご確認ください。
import numpy as np
rng = np.random.default_rng()
a = rng.integers(0, 11, (3, 5))
a
# デフォルトでは全要素の累積和を求める
np.cumsum(a)
# メソッド
a.cumsum()
次元軸の指定(axis)
多次元配列では、axisで累積合計を求める次元軸を指定することができます。
以下は1次元軸(横軸)を指定した場合です。
# 1次元軸(横軸)方向の累積和を求める
np.cumsum(a, axis=-1)
# メソッド
a.cumsum(axis=-1)
以下は2次元軸(縦軸)を指定した場合です。
# 2次元軸(縦軸)方向の累積和を求める
np.cumsum(a, axis=0)
# メソッド
a.cumsum(axis=0)
3. まとめ
以上がnp.cumsumの使い方です。以下の関数も併せて確認しておくと良いでしょう。
コメント