※こちらの記事は、プロスタ編集部が現在大変人気の高いPythonの文法記事を公開することで、皆様の学習にお役に立ちたい意図で投稿しております。
参考サイト:Pythonを使うなら欠かせない!演算を高速化するNumpyの使い方!
Pythonを使うなら欠かせない!演算を高速化するNumpyの使い方!
Pythonには便利なライブラリが数多く用意されており、自由に使うことができます。ライブラリを使うことで、高度な計算や複雑な処理を簡単に実現することができます。そんなライブラリの中でも特に良く使われるのがNumPyです。NumPyは科学技術計算などで配列や行列の演算を高速で行うために使われます。研究などで数学的な計算をしたいときに、非常に有効なライブラリとなっています。
今回は、そんなNumPyの基本的な使い方について説明します。
NumPyのインストール
NumPyはpipコマンドを使うことで簡単にインストールすることができます。コンソールから以下のコマンドを入力してインストールしてください。
pip install numpy
ただし、Pythonのバージョンなどによってはpipでのインストールが失敗する可能性があります。その場合は以下のページからNumPyをダウンロードして、そのダウンロードしたファイルをpipコマンドでインストールするようにしてください。
NumPyのファイルは複数ありますので、ご自身のPythonのバージョンやOSのバージョンに合ったものをダウンロードしてくさい。ファイル名のcp○○がPythonのバージョン、win_amd○○がOSのバージョンを表しています。
例えば、「numpy‑1.12.0rc2+mkl‑cp36‑cp36m‑win_amd64.whl」というファイルはPythonのバージョンは3.6、OSのバージョンは64bitOS、ということを表します。
ダウンロードが終わったら、pipでそのファイルをインストールします。コマンドは以下の通りです。
pip install さきほどダウンロードしたファイルのパス
NumPyのインポート
NumPyのインストールが終わったら、NumPyをインポートします。これで、NumPyを使う準備が完了です。
import numpy #NumPyを使う際には必ず必要
NumPy配列を扱う
配列の生成
NumPyは配列や行列の計算を高速で行うことができるライブラリです。まずは、NumPyで配列を生成します。NumPyの配列はarrayメソッドで生成することができます。
import numpy
n_array = numpy.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(n_array)
実行結果
[[1 2 3]
[4 5 6]
[7 8 9]]
また、NumPyでは数学などで使われる行列を表現することができます。行列を生成するにはmatrixを利用します。
n_matrix = numpy.matrix('1,2 ; 3, 4')
print(n_matrix)
実装結果
[[1 2]
[3 4]]
配列の演算
NumPyの配列はPythonの通常のリストのように扱えますし、行列も言い換えれば2次元のリストとほぼ同じです。では、通常のリストとの違いは何なのでしょうか?それは、行列や配列に対して数学的な演算が簡単に行えることです。
例えば、通常のリストに定数を掛けるとそのリストが複製されますが、NumPyの配列に定数を掛けると、行列に定数を掛ける演算が行われ、各要素が定数倍された配列になります。
n_array = numpy.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(n_array * 3)
実行結果
[[ 3 6 9]
[12 15 18]
[21 24 27]]
このほかにも、配列と定数や、配列同士の四則演算を行うことができます。また、NumPyには演算用の関数が多数用意されているほか、標準ライブラリであるmathモジュールで定義されている数学関数も利用できます。NumPyで利用できる関数には以下のようなものがあります。
関数 | 効果 |
---|---|
numpy.add(配列, 定数) | 配列に定数を足す |
numpy.multiply(配列, 定数) | 配列に定数を掛ける |
配列.dot(配列) | 配列(行列)の内積を計算する |
numpy.mean(配列) | 配列の平均を計算する |
numpy.median(配列) | 配列の中央値を計算する |
numpy.std(配列) | 配列の標準偏差を計算する |
numpy.var(配列) | 配列の分散を計算する |
n_array = numpy.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print('n_arrayの平均値:{}'.format(numpy.mean(n_array)))
print('n_arrayの中央値:{}'.format(numpy.median(n_array)))
print('n_arrayの標準偏差:{}'.format(numpy.std(n_array)))
実行結果
n_arrayの平均値:5.0
n_arrayの中央値:5.0
n_arrayの標準偏差:2.581988897471611