文系エンジニア大学生の技術ブログ

主にエンジニア向けにITやプログラミングなどの技術系と大学生向けに休学、留学、海外生活、トビタテ留学、長期インターンに関する記事を書いています。

【プログラミング初心者向け】pythonのライブラリNumPyの基礎について学んでみるよ。

<

f:id:daikiyano:20181125144943p:plain

出典画像:NumPy - Wikipediaより引用

今回、プログラミングに興味のある学生やpythonをこれから学習していきたい方に向けてpythonのライブラリであるnumpyの基礎についてご紹介したいと思います。

NumPyとは? (What is NumPy!?)

NumPy公式サイト

NumPy — NumPy

NumPyとはプログラミング言語のpythonおいて数値演算を効率的に行うための拡張モジュールです。 モジュールとはpythonのライブラリって意味です。 NumPyは大規模な数学関数ライブラリを持っており、演算機能が充実しています。例えば、ベクトルや配列などの多次元配列などの計算ができ、これらは人口知能実装していく上で欠かせない演算ライブラリでありツールになります。 これから人口知能を学習されていく方はpythonに付随してNumpyやmatplotlibなどのライブラリを活用した学習もしていく必要があります。

参考サイト NumPy - Wikipedia

pythonとNumPyを学習していくために必要なツール

pythonを学習していくなら方がインストールしておいた方が良いツールをここで挙げておきます。

  • anaconda
  • Jupyter Notebook

pythonについてよく分からない方は以下のサイトを参照してみてください。 www.for-engineer.life

www.for-engineer.life

anaconda

pythonを本格的に学習されていく方はAnacondaでpythonの環境構築することを強くおすすめします。 anacondaにはpythonとpythonで必要とされるライブラリが既にパッケージとして用意されているので、いちいちnumpyなどのライブラリをインストールする手間が省けます。

インストールの仕方についてはTechAcademyさんのサイトが分かりやすいので、紹介しておきます。

techacademy.jp

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の配列を使うこともできます。

  • 関数
  • 引数
  • 返り値

がいまいちよく分からない方は以下のサイトをご参照ください。

www.for-engineer.life

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を使って機械学習や深層学習の円滑な学習をしていくためにも数学の復習をしていこうかなと思ってます。

プログラミングに数学は必要なの?と疑問をお持ちの方は以下の記事を参照にしてみてください。

www.for-engineer.life