NumPyの配列同士の和を取得するadd関数の使い方

NumPyのadd関数は、2つの配列を各要素ごとに足し合わせる関数です。+演算子を使った演算と出力結果も速度も同じですが、様々な引数を設定することが可能です。

ここでは、このnp.add()について簡潔に解説します。

NumPy配列の合計・和を取得する操作まとめ
配列の合計値の操作に関しては、『NumPyの合計・和を取得する関数とメソッドまとめ』ですべて簡潔にまとめています。ぜひご確認ください。

目次

1. 書式

基本書式は次の通りです。

numpy.add

書き方:

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のどちらもスカラーの場合はスカラーを返します。

一緒に確認したい関数:

  • sum: 配列の要素の合計を取得
  • cumsum: 配列の要素の累積合計を取得

Note

np.add(x1, x2)の出力結果は x1 + x2 と同じです。単純な合計だけの場合、両者の速度はほとんど同じです。np.add()を使うメリットは単純な演算では設定できないパラメータ(オプション引数)を使用できる点にあります。

2. サンプルコード

それではサンプルコードを見ていきましょう。

以下の2つの配列x1 とx2 を使います。

In [1]:
import numpy as np
rng = np.random.default_rng()
x1 = rng.integers(0, 11, (2, 3))
x1
Out[1]:
array([[2, 0, 7],
       [6, 9, 3]])
In [2]:
x2 = rng.integers(0, 11, (2, 3))
x2
Out[2]:
array([[9, 0, 7],
       [8, 1, 0]])

2つの配列を両方ともnp.add()に渡します。すると、各要素ごとの和を要素とする配列が戻ってきます。

In [3]:
# 2つの配列の要素を足す
np.add(x1, x2)
Out[3]:
array([[11,  0, 14],
       [14, 10,  3]])

x1 とx2 は同じshapeであるか、ブロードキャスト可能なshapeになっている必要があります。ブロードキャストについては『覚えておくべきNumPy配列のブロードキャストのルール』で詳しく解説しています。

In [4]:
# 縦方向にブロードキャスト
np.add(x1, [5, 10, 15])
Out[4]:
array([[ 7, 10, 22],
       [11, 19, 18]])
In [5]:
# 横方向にブロードキャスト
np.add(x1, [[5], [10]])
Out[5]:
array([[ 7,  5, 12],
       [16, 19, 13]])

オプション引数の where で要素の和を取得する列や行などを特定することができます。

In [6]:
# オプション引数whereで特定の行や列の要素のみ合計
np.add(x1, x2, where=[True, False, True])
Out[6]:
array([[11,  0, 14],
       [14,  0,  3]])

Pythonは False=0 でありTrue=1 と解釈するので次のような書き方も可能です。

In [7]:
# この書き方も可能
np.add(x1, x2, where=[[0], [1]])
Out[7]:
array([[ 0,  0,  0],
       [14, 10,  3]])

なお上のコードでは、Falseの行や列には0が挿入されていますが、実際にはランダムな未初期化の値が挿入されています。未初期化値については『NumPyのempty関数で空の配列(未初期化配列)を生成する方法』をご覧いただくと理解が進むと思います。

ここでは割愛しますが、これ以外にもNumPyのユニバーサルファンクション(ufunc)をキーワード引数として設定可能です。例えば、axis, dtype, out, subok などです。

3. まとめ

以上が、np.add()の使い方です。



よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

目次
閉じる