2022年度計算機演習A・B

第9回:NumPyの使用

1. NumPyとは

NumPy(ナンパイまたはナムパイと読む、Numerical Pythonに由来)は、数値計算を効率的に行うためのPythonの有名なライブラリです。

一般にライブラリを使用する際は

import ライブラリ名 as 別名

のように書くことを以前に学習しましたが、NumPyは慣例的に次のようにインポートします。

これで、np.関数名(...)の形で、NumPyに用意された様々な関数を使えるようになります。

NumPyにおいて中心となるのは、Pythonの通常のリストを拡張した概念である多次元配列です。以下では、その使い方について詳しく見ていきます。

2. NumPyの多次元配列

2.1. 多次元配列の作成

NumPyの多次元配列を作成するには、関数np.arrayを使用します。

ここで、shapendimsizeはそれぞれ、NumPyの多次元配列がもつ属性(オブジェクトと結びついた値)です。

また、特殊な1次元配列として、等差数列(区間の等分割)を作成する関数np.linspaceが用意されています。

2.2. 要素へのアクセス

配列の要素(成分)へのアクセスは、次のように角括弧[]を用いて行います。リストと同様に、番号は1ではなく0から数えることに注意してください。

2.3. 要素の一括計算

NumPyの配列に対して次のように加減乗除などを行うと、要素ごとの計算を一括で行うことができます。

さらに、NumPyに用意された数学関数を用いると、配列の要素ごとの関数値を一度に求めることができます。

(mathライブラリの数学関数ではそのようなことはできず、エラーになります。)

これを利用すると、第6回の授業では少し手間が掛かっていた関数のグラフの描画を、簡潔なコードで行うことができます。

演習1

次の関数のグラフを描画してください。

$$ y=\sin x^3 \cos x+1, \quad 1\leq x\leq 2 $$

2.4. 行列の演算

NumPyの2次元配列は、行列に対応しています。要素ごとの加減乗除などの計算については上で説明しましたが、他にも以下のような行列特有の演算が可能です。

演習2

次の行列 $A$ とベクトル $b$ に対して、方程式 $Ax=b$ の解 $x$ を求めてください。

$$ A= \begin{pmatrix} 2 & 1 & 0\\ 1 & 2 & 1\\ 0 & 1 & 2 \end{pmatrix} ,\quad b= \begin{pmatrix} 1\\ 2\\ 3 \end{pmatrix} $$

第9回レポート課題

演習1~演習2に取り組んでください。