【Python】数値計算に役立つライブラリNumPyの導入方法と使い方を紹介

PC関連

 Pythonを使って機械学習をはじめると、膨大な量の数値計算をする必要に迫られるため、計算を効率的に行うモジュール「NumPy」を使うことが多くなります。

 NumPyは、機械学習で必須となるベクトルや行列などの多次元配列のデータを簡単に扱えるようにしてくれるだけでなく、計算を高速に処理してくれるとても便利なモジュールです。

 そこで今回は、Pythonで機械学習する方には必須のNumPyの導入方法と簡単な使い方を紹介します。




スポンサーリンク

 NumPyの導入方法

 まずは「NumPy」がインストールされているか確認しましょう。

 Windowsの場合は、コマンドプロンプト(「Windowsシステムツール」⇒「コマンドプロンプト」)を立ち上げ、「python」と入力した後に、pythonのコンソールで以下のコマンドを実行します。

import numpy

 エラーが出なければインストールできています。エラーが出た場合は、「CTL+Z」⇒「Return」でpythonのコンソールから抜け出し、以下のコマンドでインストールしましょう。

pip install numpy

 ちなみに、インストールされている状態で、以下のサンプルコードを作成して実行(「python numpy_version.py」と入力)すると、NumPyのバージョンが確認できます。

◆サンプルプログラム(numpy_version.py):

import numpy as np

print(np.__version__)

◆実行結果:

1.17.2
スポンサーリンク

 NumPyの使い方

 「NumPyの使い方」と一言でいっても幅広いため、ここではよく使われる機能に絞って紹介します。

NumPyの配列(ndarray)の使い方

 NumPyの基本は、ndarrayという配列をつくるところから始まります。

 ndarrayは多次元配列を扱うためのクラスで、1次元であればベクトルとして、2次元であれば行列として、3次元以上であればテンソルとして扱うことができます。

 まずは、1次元配列(ベクトル)をつくる場合、以下のサンプルプログラムで作成できます。

◆サンプルプログラム:

import numpy as np
 
vector1 = np.array([1,2,3])
print(vector1)

◆実行結果:

[1 2 3]

 NumPyはライブラリなので、最初にimportする必要があります。また、numpyをnpという名前でimportするのが慣習になっているので、特別な理由がない限り「np」としてimportしましょう。

 あとは、np.arrayに数値を入力すれば、1次元配列が作成できます。

 2次元配列(行列)も基本的には1次元と同じ方法で作成できます。1次元配列との違いは、複数の配列をカンマ(,)で区切って並べるところです。

◆サンプルプログラム:

import numpy as np
 
vector1 = np.array([[1,2,3],[4,5,6]])
print(vector1)

◆実行結果:

[[1 2 3]
 [4 5 6]]

 これで基本的な配列の作り方が理解できました。

配列の計算

 では次に、配列の計算について簡単に紹介していきます。

 次のサンプルプログラムは、ある配列にスカラーを加算した場合とスカラー倍した結果を表示するものです。

◆サンプルプログラム:

import numpy as np
 
vector1 = np.array([[1,2,3],[4,5,6]])
print('add:\n',  vector1 + 3)
print('mult:\n', vector1 * 3)

◆実行結果:

add:
 [[4 5 6]
 [7 8 9]]
mult:
 [[ 3  6  9]
 [12 15 18]]

 配列にスカラーを足すと、それぞれの要素に足されることが、配列にスカラーをかけると、それぞれの要素が定数倍されることがわかります。

 次のサンプルプログラムのように、配列同士の足し算、引き算、掛け算もできます。

◆サンプルプログラム:

import numpy as np
 
vector1 = np.array([[1,2,3],[4,5,6]])
vector2 = np.array([[7,8,9],[10,11,12]])
print('add:\n',  vector1 + vector2)
print('sub:\n',  vector1 - vector2)
print('mult:\n', vector1 * vector2)

◆実行結果:

add:
 [[ 8 10 12]
 [14 16 18]]
sub:
 [[-6 -6 -6]
 [-6 -6 -6]]
mult:
 [[ 7 16 27]
 [40 55 72]]

 ちなみに、行列の積を計算したい場合は、次のサンプルプログラムのように「.dot」関数を使います。

◆サンプルプログラム:

import numpy as np
 
vector1 = np.array([[1,2,3],[4,5,6]])
vector2 = np.array([[7,8],[9,10],[11,12]])
print(vector1.dot(vector2))

◆実行結果:

[[ 58  64]
 [139 154]]

 2×3行列(vector1)と3×2行列(vector2)の積なので、2×2行列が返ってきます。

 どれも簡単に計算することが出来ましたね。

NumPyの基本的な関数の使い方

 では次に、NumPyの基本的な関数の使い方を紹介します。

 まずは四則演算です。「np.add」関数で加算、「np.subtract」関数で減算、「np.multiply」関数で乗算、「np.divide」関数で除算が計算できます。

◆サンプルプログラム:

import numpy as np
 
print('add: ', np.add(4,2))
print('sub: ', np.subtract(4,2))
print('mult:', np.multiply(4,2))
print('div: ', np.divide(4,2))

◆実行結果:

add:  6
sub:  2
mult: 8
div:  2.0

 次は、累乗と平方根、対数です。「np.pwer」関数で累乗、「np.sqrt」関数で平方根、「np.log」関数で自然対数が計算できます。

◆サンプルプログラム:

import numpy as np
 
print('power:', np.power(4,2))
print('sqrt: ', np.sqrt(4))
print('log:  ', np.log(10))

◆実行結果:

power: 16
sqrt:  2.0
log:   2.302585092994046

 最後に、三角関数です。「np.sin」「np.cos」「np.tan」で計算できます。

◆サンプルプログラム:

import numpy as np
import math

rad = math.radians(135)

print('sin:', np.sin(rad))
print('cos:', np.cos(rad))
print('tan:', np.tan(rad))

◆実行結果:

sin: 0.7071067811865476
cos: -0.7071067811865475
tan: -1.0000000000000002

 ただし、関数に引き渡すのは「度」ではなく「ラジアン」のため、「math.radians」関数を使って度をラジアンに変換してから入力しています。

スポンサーリンク

 最後に

 今回は、NumPyの導入方法と簡単な使い方を紹介してきました。もちろん、NumPyには他に便利な機能が数多くありますが、まずは今回紹介した基本を理解してみてはどうでしょうか。

 きっと、あれこれ試してみたくなりますよ。

コメント

タイトルとURLをコピーしました