はじめに
この実験では、NumPy のいくつかの高度な機能について説明します。これには、線形代数、乱数生成、マスク付き配列などが含まれます。
NumPy を使った線形代数
NumPy には、線形代数演算用の包括的な関数セットがあります。以下にいくつかの例を示します。
Python シェルを開く
ターミナルで次のコマンドを入力して Python シェルを開きます。
python3
内積
2 つの配列の内積は、np.dot()関数を使用して計算できます。2 つの配列 A と B の内積は、A と B の対応する要素の積の和として定義されます。
import numpy as np
## 2 つの配列を作成
a = np.array([1, 2])
b = np.array([3, 4])
## 内積を計算
dot_product = np.dot(a, b)
print(dot_product) ## 出力:11
行列の積
行列の積は、@演算子またはnp.matmul()関数を使用して行うことができます。
次の例を十分に読み込んでください。
## 2 つの行列を作成
A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])
## 行列の積
C = A @ B
print(C) ## 出力:[[19 22], [43 50]]
別の方法で結果を得ることもできます。
## 2 つの行列を作成
A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])
## 行列の積
C = np.matmul(A,B)
print(C) ## 出力:[[19 22], [43 50]]
行列式と逆行列
行列の行列式と逆行列は、それぞれnp.linalg.det()とnp.linalg.inv()関数を使用して計算できます。
## 1 つの行列を作成
A = np.array([[1, 2], [3, 4]])
## 行列式と逆行列を計算
det_A = np.linalg.det(A)
inv_A = np.linalg.inv(A)
print(det_A) ## 出力:-2.0
print(inv_A) ## 出力:[[-2. 1. ], [ 1.5 -0.5]]
演習
これであなたの番です。2 つの配列を構築し、np.dot()関数を使用して内積を計算してください。行列の積を計算するには@またはnp.matmul()を使用し、行列の行列式と逆行列を計算するにはnp.linalg.det()とnp.linalg.inv()関数を使用してください。
乱数生成
NumPy は、乱数を生成するためのいくつかの関数を提供しています。以下にいくつかの例を示します。
乱数の生成
np.random.rand()関数を使用すると、0 から 1 の間の乱数を生成できます。
## 2x2 の乱数の行列を生成
a = np.random.rand(2, 2)
print(a) ## 出力:[[0.43584547 0.37752558], [0.08936734 0.65526767]]
乱数の整数の生成
np.random.randint()関数を使用すると、2 つの指定された数の間の乱数の整数を生成できます。
## 1 から 10 の間の乱数の整数の配列を生成
a = np.random.randint(1, 10, size=(3, 3))
print(a) ## 出力:[[8 7 3], [3 3 7], [8 8 7]]
正規分布の生成
np.random.normal()関数を使用すると、正規分布からの数を生成できます。
## 正規分布からの数の配列を生成
a = np.random.normal(0, 1, size=(2, 2))
print(a) ## 出力:[[ 1.28418331 -0.90564647], [-0.76477896 1.69903421]]
演習
これで、上記の関数に従って乱数、乱数の整数、正規分布の出力を完成させてください。この演習を完了してください。
マスク付き配列
マスク付き配列は、マスクが付いた配列です。マスクは、配列のどの要素がマスク化(非表示)されるべきかを示すブール値の配列です。NumPy は、マスク付き配列を操作するためのnp.maモジュールを提供しています。
マスク付き配列の作成
np.ma.masked_array()関数を使用して、マスク付き配列を作成できます。
## 一部の値がマスク化された配列を作成
a = np.ma.masked_array([1, 2, 3, 4], mask=[True, False, False, True])
print(a) ## 出力:[-- 2 3 --]
マスクの適用
np.ma.masked_where()関数を使用して、マスクを配列に適用できます。
## 配列を作成
a = np.array([1, 2, 3, 4])
## マスクを作成
mask = a > 2
## マスクを適用
b = np.ma.masked_where(mask, a)
print(b) ## 出力:[1 2 -- --]
無効値のマスク化
マスク付き配列は、NaN(Not a Number)や無限大などの無効値を処理するために使用できます。
## いくつかの無効値を含む配列を作成
a = np.array([1, np.nan, np.inf, 4])
## マスク付き配列を作成
b = np.ma.masked_invalid(a)
print(b) ## 出力:[1.0 -- -- 4.0]
演習
これで、numoy が提供するnp.maモジュールを使用して、マスク付き配列の作成を完了してください。同時に、np.ma.masked_where()関数を使用して配列にマスクを適用し、最後にnp.ma.masked_invalid()を使用して無効値を処理してください。この演習を完了してください。
まとめ
この実験を完了しました!おめでとうございます!
このチュートリアルでは、NumPy のいくつかの高度なトピックについて説明しました。それには、線形代数、乱数生成、マスク付き配列などが含まれます。これらの機能は、データ分析や科学計算を含む多くのアプリケーションに役立ちます。
引き続き頑張ってください!



