NumPy でのベクトル加算

Manav Narula 2023年1月30日
  1. NumPy で numpy.add() 関数を使用してベクトル加算を実行する
  2. NumPy で numpy.ndarray.__add__() 関数を使用してベクトル加算を実行する
  3. NumPy で+ 演算子を使用してベクトル加算を実行する
  4. 2つの配列のサイズが等しくない場合の対処方法
NumPy でのベクトル加算

リストの 1 次元配列は、ベクトルと見なすことができます。Python では、numpy モジュールを使用して、配列に対してさまざまな操作を実行します。

このチュートリアルでは、Python でベクトル加算を実行する方法について説明します。

ベクトル加算とは、2つの配列を加算することを意味します。配列は、以下で説明するすべての方法で同じ長さである必要があります。それ以外の場合は、ValueError が発生します。

NumPy で numpy.add() 関数を使用してベクトル加算を実行する

numpy モジュールの add() 関数を使用して、2つの配列を追加できます。同じサイズの配列に対して加算を実行し、対応するすべての位置の要素を合計します。

例えば、

import numpy as np

arr1 = np.array([3, 2, 1])
arr2 = np.array([1, 2, 3])

s = np.add(arr1, arr2)
print(s)

出力:

[4 4 4]

NumPy で numpy.ndarray.__add__() 関数を使用してベクトル加算を実行する

numpy.ndarray.__add__() 関数は、配列のすべての要素に値を追加するために使用されます。これを使用して、2 番目の配列をこの関数に渡すことでベクトルの加算を実行できます。

例えば、

import numpy as np

arr1 = np.array([3, 2, 1])
arr2 = np.array([1, 2, 3])

s = arr1.__add__(arr2)
print(s)

出力:

[4 4 4]

NumPy で+ 演算子を使用してベクトル加算を実行する

算術+ 演算子を使用して 2つの配列の合計を計算するだけで、関数の使用を排除できます。

例えば、

import numpy as np

arr1 = np.array([3, 2, 1])
arr2 = np.array([1, 2, 3])

s = arr1 + arr2
print(s)

出力:

[4 4 4]

2つの配列のサイズが等しくない場合の対処方法

配列が同じサイズでない場合、上記のすべてのメソッドが ValueError を返すことは前に説明しました。このような状況では、小さい配列を手動で 0 で埋めるか、numpy.pad() 関数を使用して通常どおり加算を実行するか、独自の関数を作成して加算を実行できます。

以下のコードを参照してください。

import numpy as np

a = np.array([3, 2, 1])
b = np.array([1, 2])


def unequal_add(a, b):
    if len(a) < len(b):
        c = b.copy()
        c[: len(a)] += a
    else:
        c = a.copy()
        c[: len(b)] += b
    return c


print(unequal_add(a, b))

出力:

[4 4 1]

長い方の配列をコピーして、小さい方の配列の要素を長い方の配列に追加します。この方法は多くのメモリを消費します。

著者: Manav Narula
Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn