NumPy Tutorials

NumPy:算術演算とブロードキャストの完全マスター

Spread the love

NumPyはPythonにおける数値計算の中核となるライブラリであり、効率的な配列操作のための強力なツールを提供します。このチュートリアルでは、簡潔で高性能な数値コードを作成するために不可欠な2つの基本概念、算術演算とブロードキャストについて掘り下げて説明します。

目次

  1. 算術演算
  2. ブロードキャスト

1. 算術演算

NumPyは、Pythonの算術演算子(+, -, *, /, //, %, **)をNumPy配列に直接作用するようにシームレスに拡張します。これらの演算は要素ごとの演算であり、配列内の対応する要素に適用されます。例で説明しましょう。


import numpy as np

arr1 = np.array([1, 2, 3, 4])
arr2 = np.array([5, 6, 7, 8])

print("加算:", arr1 + arr2)       # 出力: [ 6  8 10 12]
print("減算:", arr1 - arr2)    # 出力: [-4 -4 -4 -4]
print("乗算:", arr1 * arr2) # 出力: [ 5 12 21 32]
print("除算:", arr1 / arr2)      # 出力: [0.2        0.33333333 0.42857143 0.5       ]
print("床除算:", arr1 // arr2) # 出力: [0 0 0 0]
print("剰余:", arr1 % arr2)        # 出力: [1 2 3 4]
print("べき乗:", arr1 ** arr2) # 出力: [    1    64  2187 65536]

この要素ごとの演算は、多次元配列にも容易に拡張されます。

2. ブロードキャスト

ブロードキャストは、特定の条件下で異なる形状の配列間の演算を可能にする、NumPyの強力な機能です。明示的なループの必要性を排除し、パフォーマンスを大幅に向上させます。ブロードキャストの主要なルールは以下のとおりです。

  1. ルール1: 配列の次元が異なる場合、より小さい配列の形状の先頭に1を先頭に追加して、より大きい配列の次元数と一致させます。
  2. ルール2: 配列の次元サイズが1で、他の配列の次元が1より大きい場合、サイズ1の次元はより大きい次元と一致するように伸張されます。
  3. ルール3: 配列の次元が異なり、どちらもサイズ1でない場合、ValueErrorが発生します。

ブロードキャストを例示しましょう。


import numpy as np

arr1 = np.array([[1, 2, 3], [4, 5, 6]])
arr2 = np.array([10, 20, 30])

result = arr1 + arr2  # ブロードキャストの動作

print(result)
# 出力:
# [[11 22 33]
# [14 25 36]]

ここでは、arr2(形状(3,))がarr1の形状(2, 3)と一致するようにブロードキャストされます。arr1の各行にarr2が加算され、明示的なループが回避されます。ブロードキャストを習得することは、効率的で読みやすいNumPyコードを作成するために不可欠です。予期しない結果やエラーを回避するために、常に配列の形状を注意深く検討してください。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です