NumPyのadd関数は、2つの配列を各要素ごとに足し合わせる関数です。+演算子を使った演算と出力結果も速度も同じですが、様々な引数を設定することが可能です。
ここでは、このnp.add()について簡潔に解説します。
NumPy配列の合計・和を取得する操作まとめ
配列の合計値の操作に関しては、『NumPyの合計・和を取得する関数とメソッドまとめ』ですべて簡潔にまとめています。ぜひご確認ください。
1. 書式
基本書式は次の通りです。
書き方:
np.add(x1, x2)
パラメーター:
引数 | 型 | 解説 |
---|---|---|
x1, x2 | array_like | ここに渡した2つの配列の要素を合計します。 |
out* | ndarray | 戻り値の配列で上書きする配列を指定します。戻り値の配列と、上書きする配列のshapeは一致している必要があります。 |
where* | array_like of bool | 足し算に含める要素を、要素がブール値の配列で指定します。 |
**kwargs | その他キーワード引数としてaxis, keepdims, casting, order, dtype, subok, signature, extobj を使用可能です。 | |
* はオプション引数であることを示します。 |
戻り値:
各要素の合計を格納した配列またはスカラー x1とx2を要素ごとの和を格納した配列を作成します。x1とx2のどちらもスカラーの場合はスカラーを返します。 |
一緒に確認したい関数:
Note
np.add(x1, x2)の出力結果は x1 + x2 と同じです。単純な合計だけの場合、両者の速度はほとんど同じです。np.add()を使うメリットは単純な演算では設定できないパラメータ(オプション引数)を使用できる点にあります。
2. サンプルコード
それではサンプルコードを見ていきましょう。
以下の2つの配列x1 とx2 を使います。
import numpy as np
rng = np.random.default_rng()
x1 = rng.integers(0, 11, (2, 3))
x1
x2 = rng.integers(0, 11, (2, 3))
x2
2つの配列を両方ともnp.add()に渡します。すると、各要素ごとの和を要素とする配列が戻ってきます。
# 2つの配列の要素を足す
np.add(x1, x2)
x1 とx2 は同じshapeであるか、ブロードキャスト可能なshapeになっている必要があります。ブロードキャストについては『覚えておくべきNumPy配列のブロードキャストのルール』で詳しく解説しています。
# 縦方向にブロードキャスト
np.add(x1, [5, 10, 15])
# 横方向にブロードキャスト
np.add(x1, [[5], [10]])
オプション引数の where で要素の和を取得する列や行などを特定することができます。
# オプション引数whereで特定の行や列の要素のみ合計
np.add(x1, x2, where=[True, False, True])
Pythonは False=0 でありTrue=1 と解釈するので次のような書き方も可能です。
# この書き方も可能
np.add(x1, x2, where=[[0], [1]])
なお上のコードでは、Falseの行や列には0が挿入されていますが、実際にはランダムな未初期化の値が挿入されています。未初期化値については『NumPyのempty関数で空の配列(未初期化配列)を生成する方法』をご覧いただくと理解が進むと思います。
ここでは割愛しますが、これ以外にもNumPyのユニバーサルファンクション(ufunc)をキーワード引数として設定可能です。例えば、axis, dtype, out, subok などです。
3. まとめ
以上が、np.add()の使い方です。
コメント