出典画像:NumPy – Wikipediaより引用
今回、プログラミングに興味のある学生やpythonをこれから学習していきたい方に向けてpythonのライブラリであるnumpyの基礎についてご紹介したいと思います。
NumPyとは? (What is NumPy!?)
NumPy公式サイト
NumPyとはプログラミング言語のpythonおいて数値演算を効率的に行うための拡張モジュールです。
モジュールとはpythonのライブラリって意味です。
NumPyは大規模な数学関数ライブラリを持っており、演算機能が充実しています。例えば、ベクトルや配列などの多次元配列などの計算ができ、これらは人口知能実装していく上で欠かせない演算ライブラリでありツールになります。
これから人口知能を学習されていく方はpythonに付随してNumpyやmatplotlibなどのライブラリを活用した学習もしていく必要があります。
参考サイト
NumPy – Wikipedia
pythonとNumPyを学習していくために必要なツール
pythonを学習していくなら方がインストールしておいた方が良いツールをここで挙げておきます。
- anaconda
- Jupyter Notebook
pythonについてよく分からない方は以下のサイトを参照してみてください。
www.for-engineer.life
anaconda
pythonを本格的に学習されていく方はAnacondaでpythonの環境構築することを強くおすすめします。
anacondaにはpythonとpythonで必要とされるライブラリが既にパッケージとして用意されているので、いちいちnumpyなどのライブラリをインストールする手間が省けます。
インストールの仕方についてはTechAcademyさんのサイトが分かりやすいので、紹介しておきます。
Jupyter Notebook
Jupyter Notebookとは、WebブラウザからPythonのプログラムを実行することのできるツールのことです。
Jupyter Notebookについてもanacondaの中に含まれています。
インストールの仕方については以下のサイトをご参照ください。
Anaconda を利用した Python のインストール (Windows) – Python でデータサイエンス
Jupyter Notebook を使ってみよう – Python でデータサイエンス
時間があるときにanacondaとJupyter Notebookのインストール方法について記事としてまとめられればと思います。
NumPyの基礎
NumPyのインポート
早速、NumPyをインポートしてNumPyの基礎を学んでいきます。
Jupyter Notebookの準備ができたらまずはNumPyを使えるようにするためにインポートします。
以下のように記載すればNumPyの準備は完了です。
下のコードはNumPyをインポートしてnpという名前でNumPyのモジュール扱っていきます〜っていう意味になります。
import numpy as np
NumPyの配列
冒頭でも記述しましたが、人工知能の学習をしていく上で行列やベクトルなど多次元配列の計算は必須です。
その際に使うのがNumPyの配列になります。
NumPyで配列を作る際はarray関数を使うことでpythonのリストから簡単に使うことが可能になります。
以下のようなコードを書くことでNumPyの配列を作成することができます。
結果は、[1, 2, 3, 4, 5, 6]になります。
mport numpy as np a = np.array([1, 2, 3, 4, 5, 6]) print(a)
以下のようにコードを書くと二重のリストで二次元配列を作成することが可能になります。
結果は[[1 2 3] [4 5 6]]です。
import numpy as np b = np.array([[1, 2, 3], [4, 5, 6]]) print(b)
NumPy 配列の計算
下のコードのように配列と数値の間で演算を行なっています。
配列の各要素と数値で演算がなされます。
import numpy as np a = np.array([[1, 2, 3], [4, 5, 6]]) # 2次元配列 print(a) print() print(a + 2) print() print(a * 2) #結果は以下のようになります。 #print(a) [[1 2 3] [4 5 6]] #print(a + 2) [[3 4 5] [6 7 8]] #print(a * 2) [[ 2 4 6] [ 8 10 12]]
以下のように配列同士で計算することも可能になります。
同じ位置の各要素同士で計算が行われます。
b = np.array([[2, 1, 2], [5, 4, 3]]) # 2次元配列 c = np.array([[2, 2, 1], [3, 3, 1]]) # 2次元配列 print(b) print() print(c) print() print(b + c) print() print(b * c) #結果は以下のようになります。 #print(b) print() [[2 1 2] [5 4 3]] #print(c) [[2 2 1] [3 3 1]] #print(b + c) [[4 3 3] [8 7 4]] #print(b * c) [[ 4 2 2] [15 12 3]]
配列と関数 〜引数・返り値〜
関数の引数や返り値としてNumPyの配列を使うこともできます。
- 関数
- 引数
- 返り値
がいまいちよく分からない方は以下のサイトをご参照ください。
https://wa3.i-3-i.info/word1442.html
以下の場合だと引数として配列を受け取り、返り値として配列を返します。
import numpy as np def hello(x): y = x * 2 + 1 return y a = np.array([[1, 2, 3], [4, 5, 6]]) b = hello(a) print(b) #結果は以下のようになります。 [[ 3 5 7] [ 9 11 13]]
以上、NumPyの基礎についてでした。
これから人口知能についての学習されていく方は、pythonと付随してNumPyなどのpythonのライブラリを扱えるようにする必要があります。
PHPやRuby on Railsなどの用いてwebアプリケーションを作成するのとは異なり、人工知能の学習をしていく場合は数学の基礎知識についても学習して行かなければなりません。私自身、数学が嫌いな文系大学生です。しかし、今後pythonを使って機械学習や深層学習の円滑な学習をしていくためにも数学の復習をしていこうかなと思ってます。
プログラミングに数学は必要なの?と疑問をお持ちの方は以下の記事を参照にしてみてください。