「Python3」NumPy(ndarrayの算術演算)

NumPy NumPy

ndarrayでは、要素ごとの処理のためにわざわざループを書く必要はないです。この機能は「ベクトル演算」と呼ばれる、NumPyの重要な特徴の1つです。

加算 +

要素ごとに加算します。

<ソースコード>
arr1 = np.array(
    [
        [2, 4, 6],
        [8, 10, 12],
        [14, 16, 18]
    ]
)
arr2 = np.array(
    [
        [1, 2, 3],
        [4, 5, 6],
        [7, 8, 9]
    ]
)
pprint.pprint(arr1 + arr2)
pprint.pprint(arr1 + 3)
<出力結果>
array([[ 3,  6,  9],
       [12, 15, 18],
       [21, 24, 27]])
array([[ 5,  7,  9],
       [11, 13, 15],
       [17, 19, 21]])

計算過程を分かりやすく図で表します。
NumPy 算術演算 説明01

NumPy 算術演算 説明02

減算 –

要素ごとに減算します。

<ソースコード>
arr1 = np.array(
    [
        [2, 4, 6],
        [8, 10, 12],
        [14, 16, 18]
    ]
)
arr2 = np.array(
    [
        [1, 2, 3],
        [4, 5, 6],
        [7, 8, 9]
    ]
)
pprint.pprint(arr1 - arr2)
<出力結果>
array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])

乗算 *

要素ごとに乗算します。

<ソースコード>
arr1 = np.array(
    [
        [2, 4, 6],
        [8, 10, 12],
        [14, 16, 18]
    ]
)
arr2 = np.array(
    [
        [1, 2, 3],
        [4, 5, 6],
        [7, 8, 9]
    ]
)
pprint.pprint(arr1 * arr2)
<出力結果>
array([[  2,   8,  18],
       [ 32,  50,  72],
       [ 98, 128, 162]])

除算 /

要素ごとに除算します。

<ソースコード>
arr1 = np.array(
    [
        [2, 4, 6],
        [8, 10, 12],
        [14, 16, 18]
    ]
)
arr2 = np.array(
    [
        [1, 2, 3],
        [4, 5, 6],
        [7, 8, 9]
    ]
)
pprint.pprint(arr1 / arr2)
pprint.pprint(1 / arr2)
<出力結果>
array([[2., 2., 2.],
       [2., 2., 2.],
       [2., 2., 2.]])
array([[1.        , 0.5       , 0.33333333],
       [0.25      , 0.2       , 0.16666667],
       [0.14285714, 0.125     , 0.11111111]])

剰余 %

要素ごとに剰余を計算します。

<ソースコード>
arr1 = np.array(
    [
        [2, 4, 6],
        [8, 10, 12],
        [14, 16, 18]
    ]
)
arr3 = np.array(
    [
        [3, 3, 3],
        [3, 3, 3],
        [3, 3, 3]
    ]
)
pprint.pprint(arr1 % arr3)
pprint.pprint(arr1 % 4)
<出力結果>
array([[2, 1, 0],
       [2, 1, 0],
       [2, 1, 0]], dtype=int32)
array([[2, 0, 2],
       [0, 2, 0],
       [2, 0, 2]], dtype=int32)

べき乗 **

要素ごとにべき乗を計算します。

<ソースコード>
arr1 = np.array(
    [
        [2, 4, 6],
        [8, 10, 12],
        [14, 16, 18]
    ]
)
arr3 = np.array(
    [
        [3, 3, 3],
        [3, 3, 3],
        [3, 3, 3]
    ]
)
pprint.pprint(arr1 ** arr3)
pprint.pprint(arr1 ** 2)
<出力結果>
array([[   8,   64,  216],
       [ 512, 1000, 1728],
       [2744, 4096, 5832]], dtype=int32)
array([[  4,  16,  36],
       [ 64, 100, 144],
       [196, 256, 324]], dtype=int32)

要素比較 ==

要素ごとに比較します。

<ソースコード>
arr2 = np.array(
    [
        [1, 2, 3],
        [4, 5, 6],
        [7, 8, 9]
    ]
)
arr3 = np.array(
    [
        [3, 3, 3],
        [3, 3, 3],
        [3, 3, 3]
    ]
)
pprint.pprint(arr2 == arr3)
pprint.pprint(arr2 > arr3)
<出力結果>
array([[False, False,  True],
       [False, False, False],
       [False, False, False]])
array([[False, False, False],
       [ True,  True,  True],
       [ True,  True,  True]])

コメント

タイトルとURLをコピーしました