NumPy の高度なトピック

PythonBeginner
オンラインで実践に進む

はじめに

この実験では、NumPy のいくつかの高度な機能について説明します。これには、線形代数、乱数生成、マスク付き配列などが含まれます。

これは Guided Lab です。学習と実践を支援するためのステップバイステップの指示を提供します。各ステップを完了し、実践的な経験を積むために、指示に注意深く従ってください。過去のデータによると、この 初級 レベルの実験の完了率は 96%です。学習者から 100% の好評価を得ています。

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 のいくつかの高度なトピックについて説明しました。それには、線形代数、乱数生成、マスク付き配列などが含まれます。これらの機能は、データ分析や科学計算を含む多くのアプリケーションに役立ちます。

引き続き頑張ってください!