【Python】NumPyとは?使い方や機械学習での利用について

時計 2022.05.11 / 時計

【Python】NumPyとは?使い方や機械学習での利用について

本記事ではPythonで利用できるNumPyについて解説していきます。

NumPyは配列や多次元配列の計算を高速に演算する数値計算ライブラリです。Pythonで機械学習やディープラーニングを行う場合は必ず利用されるライブラリの一つです。

大量のデータ計算を不得意とするPythonで、C言語と同程度の速度で計算を行えるNumPyは機械学習において必要不可欠なライブラリです。

本記事を通してNumPyの使い方機械学習での利用について知識を深めてください。

Python:NumPy(数値計算ライブラリ)

NumPyとは

NumPyとはPythonで利用できる数値計算ライブラリです。NumPyにより配列の操作や、多次元数値配列、数値計算を効率的にできます。

機械学習やディープラーニングにおける計算でNumPyは頻繁に利用されます。

機械学習について詳しくは以下記事をご参照ください。

NumPyはオープンソースであり、私用/商用を問わず利用することができます。ライセンス形態はBSDライセンスです。

PyPI – NumPy

NumPyの特徴

NumPyの最大の特徴は計算速度の速さです。ベクトルや行列の計算を高速で実行します。

ご存じのようにインタプリタ言語であるPythonの実行速度はC言語などと比べると遅いです。そのデメリットを補うため、NumPyはC言語とFortranで開発され、高速な計算処理を可能にしています。

そのため数値計算を行う場合、PythonではNumPyを利用するのが基本となっています。

NumPyの利用用途

機械学習では大量のデータを学習させる必要があるため、データを高速に処理することが求められます。

NumPyはベクトルや配列といった多次元数値配列の計算を高速に行えるため、機械学習ではNumPyを利用することがスタンダードとなっています。機械学習用ライブラリと言われるほどNumPyは機械学習で頻繁に使われます。

これから機械学習を学ぶという方は必ずNumPyを使いますので、詳しい使い方を覚えておいてください。

NumPyのインストール

NumPyは標準ライブラリではないため、別途インストールする必要があります。インストールの方法は以下の2種類があります。

  • Anaconda(アナコンダ)をインストールする
  • pipでインストールする
IT用語の確認

Anaconda(アナコンダ)とはPythonのディストリビューションで、Pythonの開発環境を一気にインストールできる便利ソフトです

Anacondaをインストールしていない場合は、以下のpipコマンドでインストールすることができます。

pip install NumPy

無事NumPyがインストールされれば、NumPyを使ったプログラムを作成できます。

NumPyの使用方法

NumPyのインポート

NumPyを利用するためにスクリプトの先頭でインポートする必要があります。NumPyのインポートは次のように記述します。

import numpy as np

上記はNumPyをnpという名前でインポートしています。npと名前を付けてインポートするのは慣例となっており、基本的にはこれでインポートすれば問題ないです。

NumPyの配列・多次元配列(ndarray配列)

Pythonのデータ型にはリストやタプルといったものがあります。これらを使うことで数値計算を行うことができますが、Pythonなので処理速度は遅いです。

そこでNumPyではndarray配列と呼ばれる配列を使用します。ndarray配列は多次元配列を扱うためのクラスです。1次元配列はベクトル、2次元配列は行列、3次元配列以上ではテンソルを扱います。

リストでは一列にデータを並べるだけですが、ndarrayは縦(行)と横(列)にデータを並べられます。

ndarray配列の生成にはnumpy.array()を使用します。

構文

array(object [option])

objectにはN次元の配列を指定します。これによりN次元の配列が生成されます。

1次元配列

1次元配列の生成は次のように記述します。

import numpy as np

arr = np.array([1, 2, 3])
print(arr)
# [1 2 3]

2次元配列

2次元配列の生成は次のように記述します。

import numpy as np

arr = np.array([[1, 2, 3],[4, 5, 6]])
print(arr)
# [[1 2 3]
# [4 5 6]]

3次元配列

3次元配列の生成は次のように記述します。

import numpy as np

arr = np.array([[[1, 2, 3], [4, 5, 6]], [[1, 2, 3], [4, 5, 6]]])
print(arr)
# [[[1 2 3]
#  [4 5 6]]

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

上記では3次元配列arrの中に2つの2次元配列[[1, 2, 3], [4, 5, 6]]が入っている状態です。

NumPy:配列の計算

サイズ(長さ)が同じ配列の計算

NumPyの配列計算では、同じサイズ(長さ)同士の計算は次のように問題なく実行されます。

import numpy as np

arr1 = np.array([[1, 2, 3], [4, 5, 6]])
arr2 = np.array([[1, 2, 3], [4, 5, 6]])
arr = arr1 + arr2
print(arr)
# [[ 2  4  6]
# [ 8 10 12]]

サイズ(長さ)が異なる配列の計算(ブロードキャスト)

同じサイズ同士の配列計算は前項のように問題なく実行できました。ではサイズが異なる配列同士の計算はどうなるでしょうか。

実はNumPyにはブロードキャストと呼ばれる異なるサイズ(長さ)の配列同士の計算を補完してくれる機能が備わっています。

例えば次のように次元が異なる配列同士の演算も行えます。

import numpy as np

arr1 = np.array([[1, 2, 3], [4, 5, 6]])
arr2 = np.array([1, 2, 3])
arr = arr1 + arr2
print(arr)
# [[2 4 6]
# [5 7 9]]

また次のように次元数が同じでも配列の要素数が異なるものでも演算ができます。

import numpy as np

arr1 = np.array([[1, 2, 3], [4, 5, 6]])
arr2 = np.array([[1],[2]])
arr = arr1 + arr2
print(arr)
# [[2 3 4]
# [6 7 8]]

NumPy:配列の操作

要素を末尾に追加:append()

配列に対してappend()を使用すると要素を末尾に追加できます。

構文

append(配列, 追加する要素, *axis)

axisには0または1を指定します。行の追加であれば0、列の追加であれば1を指定し、指定しなければ自動的に行の追加と認識されます。

まとめ

本記事「【Python】NumPyとは?使い方や機械学習での利用について」はいかがでしたか。

ここで紹介した機能はほんの一部です。NumPyにはまだまだ便利な機能が備わっています。

またNumPyはscikit-learnや機械学習を扱うライブラリで頻繁に利用されています。機械学習を学んでいる方は必ずNumPyによる計算ができるようになっておきましょう。