■ はじめに
https://aidemy.net/
https://codexa.net
で、Python で AI (Artificial Intelligence) を行う際に 必要なライブラリの中で、 最も基本的なNumPy(ナンパイ)について扱う。
AI に関わってくるPython ライブラリ
(1)NumPy(ナンパイ) << 今回のテーマ (2)Pandas (パンダス) (3)SciPy (4)scikit-learn(サイキット・ラーン) (5)TensorFlow (6)Keras(ケラス) (7)PyTorch(パイトーチ) (8)Apache MXNet (9)Chainer (チェイナー) 他にも... 「Matplotlib」「seaborn」 「neologdn」「MeCab」 など
目次
【1】NumPy(ナンパイ) 【2】基本的な使い方 例:NumPy配列の定義 【3】行列 / ベクトル 【4】Pythonの標準配列 と NumPy配列 との違い 【5】サンプル 例1:一通りの処理 例2:データの読込・書込
【1】NumPy(ナンパイ)
* Pythonでベクトルや行列計算を高速に行うための 数値計算ライブラリ
【2】基本的な使い方
1)配列
* ndarray を使う
https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html
2)行列
* matrix を使う
https://numpy.org/doc/stable/reference/generated/numpy.matrix.html
例:NumPy配列の定義
import numpy as np a = np.array([1, 2, 3]) b = np.matrix([[1, 2], [3, 4]]) # [1 2 3] print(a) # <class 'numpy.ndarray'> print(type(a)) # [[1 2] # [3 4]] print(b) # <class 'numpy.matrix'> print(type(b))
【3】行列 / ベクトル
import numpy as np a = np.array([1, 2]) b = np.array([3, 4]) # ベクトルの和 result = a + b print(result) # [4 6] # ベクトルスカラー倍 result = 4* a print(result) # [4 8] # ベクトル内積 - np.dot result = np.dot(a, b) print(result) # 転置行列 - x.T a = np.array([[1, 2, 3], [4, 5, 6]]) result = a.T print(result) # [[1 4] # [2 5] # [3 6]]
【4】Pythonの標準配列 と NumPy配列 との違い
import numpy as np a1 = np.array([1, 2, 3]) a2 = [1, 2, 3] a1 = a1 + [4] a2 = a2 + [4] # [5 6 7] <= 各要素に+4されている print(a1) # [1, 2, 3, 4] <= 配列が追加 print(a2)
【5】サンプル
例1:一通りの処理
# NumPyをimport() import numpy as np # np.array(リスト)で配列を高速に扱うためのndarrayクラスを生成 np_numbers = np.array([0,1,2,3,4,5,6,7]) print(np_numbers) # <class 'numpy.ndarray'>が表示 print(type(np_numbers)) # arr[start:end]で、startから(end-1)までのリストが作成(変数arrの要素の内3, 4, 5が表示) print(np_numbers[3:6]) # コピー(クローン)は、「コピーしたい配列.copy()」 clone_np_numbers = np_numbers.copy() arr = np.array([26, -3, 23, -2, 6]) # 絶対値 print(np.abs(arr)) # eのべき乗(e : ネイピア数 Napier's constant) print(np.exp(arr_abs)) # 平方根 print(np.sqrt(arr_abs))
例2:データの読込・書込
import numpy as np # 配列を定義 hello_array = np.array( [[1, 2, 3], [4, 5, 6], [7, 8, 9]]) # 書き込み:np.savetxt np.savetxt('hello.txt', hello_array, delimiter=",") # 読み込み:np.loadtxt csv_data = np.loadtxt("sample.csv", dtype="unicode", delimiter=",") print(csv_data) print('------') csv_data = np.loadtxt("sample.csv", skiprows=1, dtype="unicode", delimiter=",") print(csv_data) print() print(csv_data[0][1])
入力結果:sample.csv
id,name,remarks 001,Mike,- 002,Tom,Hello 003,Smith,World
出力結果
[['id' 'name' 'remarks'] ['001' 'Mike' '-'] ['002' 'Tom' 'Hello'] ['003' 'Smith' 'World']] ------ [['001' 'Mike' '-'] ['002' 'Tom' 'Hello'] ['003' 'Smith' 'World']] Mike
出力結果:hello.txt
1.000000000000000000e+00,2.000000000000000000e+00,3.000000000000000000e+00 4.000000000000000000e+00,5.000000000000000000e+00,6.000000000000000000e+00 7.000000000000000000e+00,8.000000000000000000e+00,9.000000000000000000e+00
参考文献
loadtxt / savetxt
http://taustation.com/numpy-file-load-save/
https://note.nkmk.me/python-numpy-loadtxt-genfromtxt-savetxt/
https://deepage.net/features/numpy-loadsavetxt.html
関連記事
Pandas ~ 基本編 ~
https://dk521123.hatenablog.com/entry/2020/10/14/000000
Pandas ~ 基本編 / CSV編 ~
https://dk521123.hatenablog.com/entry/2020/11/17/000000
Pandas ~ 基本編 / データのクレンジング ~
https://dk521123.hatenablog.com/entry/2020/04/06/235555
scikit-learn ~ 機械学習用ライブラリ ~
https://dk521123.hatenablog.com/entry/2020/03/02/233902
TensorFlow ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2018/02/16/103500
Keras ~ 深層学習用ライブラリ ~
https://dk521123.hatenablog.com/entry/2020/03/03/235302
PyTorch ~ 深層学習ライブラリ ~
https://dk521123.hatenablog.com/entry/2020/07/05/000000
Matplotlib ~ グラフ描画ライブラリ ~
https://dk521123.hatenablog.com/entry/2020/03/01/000000
IT技術の学習サイト
https://dk521123.hatenablog.com/entry/2020/02/29/003619