目次
0. 環境
Windows + jupyter ノートブック検証コード
1. 背景の紹介
【ndarrayとarrayの違い】を調べていたときに「ブロードキャスト関数」という言葉を見かけました。ブロードキャストという言葉はネットワーク関連の定義でしか知らなかったのですが、配列にも適用されるとは思いませんでしたが、まったく意味がありませんでした。使用方法を記録します。
ndarray と array の違いを簡単に紹介します。
Python では、array は Python 標準ライブラリで提供される配列型であり、ndarray は NumPy ライブラリで提供される多次元配列型です。どちらも数値データの格納に使用できますが、両者にはいくつかの違いがあります。
1) 配列型は 1 次元配列のみを格納できるのに対し、ndarray 型は多次元配列を格納できます。
2) 配列型は同じ型のデータのみを格納できますが、ndarray 型は異なる型のデータを格納できます。
3) ndarray 型はブロードキャストをサポートしているため、さまざまな形状の配列に対して数学的演算を実行できます。配列型はブロードキャスト機能をサポートしていません。
4) ndarray タイプは、線形代数、フーリエ変換、乱数生成など、数学的および科学的計算のための多くの関数とメソッドを提供します。配列型は、いくつかの基本的な配列操作メソッドのみを提供します。
2. ndarrayのブロードキャスト機能
2.1 コンセプト
形状の異なる 2 つの配列に対して加算、減算、乗算、除算などの算術演算を実行する場合、NumPy は小さい配列を大きい配列の形状に自動的にブロードキャストして、その形状を一致させます。この自動ブロードキャスト機能をブロードキャストと呼びます。
2.2 意義
これは、配列の形状を明示的に拡張したり、形状を一致させるためにループを使用したりせずに、さまざまな形状の配列に対して数学的演算を実行できることを意味します。これにより、NumPy での計算がより便利かつ効率的になります。
2.3 前提条件
配列内の要素 (タプル) の次元は等しい必要があります。たとえば、次の例では、多次元配列 [1,2,3]、[4,5,6]、[7,8,9] に 3 つのタプルがあり、それぞれに 3 つの要素が含まれるため、計算される配列にも 3 つの要素が必要です。a でタプルの次元が増加する ([1.2.3] が [1,2,3,4] になる)、または b でタプルの次元が増加する ([10,20,30,40] になる)と、コンパイラはエラーを報告します。
2.4 例
形状 (3, 3) の配列と、形状 (1, 3) の配列 a および b があるとします。
a = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
b = np.array([[10, 20, 30]])
ブロードキャスト関数を使用して配列を配列と同じ形状
b
にブロードキャストし、計算を行うことができます。a
c = a + b
print(c)
結果:
import numpy as np
a = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
b = np.array([[10, 20, 30]])
c = a + b
print(c)
説明: この例では、配列
b
の形状と一致させるために、配列は形状 (3, 3) のa
配列にブロードキャストされます。次に、2 つの配列に対して加算演算が実行されました。
2.5 完全なコード
import numpy as np
a = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
b = np.array([[10, 20, 30]])
c = a + b
print(c)
- 終わり -