機械学習を学んでいてPandasとNumpyっていう2つのツールをほとんどの人は使っていると思います。これらは数値計算をしたりデータ分析をする上で必ず必要になってくるライブラリです。
このPandasとNumpyですが上手にまとまっているサイトがないなーと思い作ってみることにしました!ドキュメントみても英語ばっかりだし、堅い文章で書かれているのでわかりにくいですよね。
今回は日本語でわかりやすく、Numpyの使い方について解説していきたいと思います。
Numpyとは
まずはNumpyとはどういうものなのかを確認しておきましょう。
NumPyは、プログラミング言語Pythonにおいて数値計算を効率的に行うための拡張モジュールである。効率的な数値計算を行うための型付きの多次元配列のサポートをPythonに加えるとともに、それらを操作するための大規模な高水準の数学関数ライブラリを提供する。
とあります。つまりNumpyは数値計算をプログラミングで簡単に作成することができる便利なライブラリです。行列の計算やベクトル演算などを手動で計算するのはかなり大変ですので、このような便利なツールを使って計算していくのが一般的になっています。
Numpyの基本文法と使い方
Numpyの宣言
Numpyを使うときは必ずNumpyを使うための宣言をしなければいけません。
import numpy as np
いろいろなArrayの作り方
Pythonを学んだ時に最初の方に配列という概念が出てきたと思います。Numpyでは配列の計算を行うのですが、Numpyにおける配列をArrayと言います。
・Arrayをつくる①
array = np.array([1, 2, 3]) # array([1, 2, 3])
・Arrayをつくる②(arangeメソッド)
array = np.arange(10) # array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
・arrayの要素を取り出す
array = np.arange(10) array[0:6] #array([0, 1, 2, 3, 4, 5])
・arrayを行列に変換
array = np.arange(10) array.reshape((2, 5)) # array([[0, 1, 2, 3, 4], # [5, 6, 7, 8, 9]])
・多次元のArrayを作る
array = np.array([[1, 2, 3], [4, 5, 6]]) #2行3列のarrayが作成 # array([[1, 2, 3], # [4, 5, 6]])
・arrayの行と列を入れ替え
array.T
# 又は
array.transpose()
・arrayの大きさを調べる
array.shape
・arrayの要素の型を調べる
array.dtype
・要素が全部0のarrayを作成
array = np.zeros(3) #3つの要素を持った値が0の配列を作成 # array([0., 0., 0.])
・要素が全部1のarrayを作成
array = np.ones((3, 3)) #3行3列で要素が全て1の行列を作成 # array([[1., 1., 1.], # [1., 1., 1.], # [1., 1., 1.]])
・単位行列を作成
array = np.eye(3) #3行3列の単位行列を作成 # array([[1., 0., 0.], # [0., 1., 0.], # [0., 0., 1.]])
・空の配列を作成
array = np.empty(3) #3行3列の配列を初期化
・arrayの四則演算
#長さが3のarrayを定義 array1 = np.array([1, 2, 3]) array2 = np.array([4, 5, 6]) ・array同士を四則演算 array = array1 + array2 # array[5 7 9] array = array1 - array2 # array[-3 -3 -3] array = array1 * array2 # array[ 4 10 18] array = array1 / array2 # array[0.25 0.4 0.5 ]
・arrayと整数の四則演算
array = np.array([1, 2, 3]) array = array + 1 # array[5.5 7. 8.5] array = array - 1 # array[4.5 6. 7.5] array = array * 3 # array[13.5 18. 22.5] array = array / 2 # array[ 6.75 9. 11.25]
・arrayの累乗
array = np.array([1, 2, 3]) array = array ** 2 #array([1, 4, 9])
・arrayの内積を求める
array.dot(arrray, array.T)
・その他計算のためのメソッド
# 平方根を求める np.sqrt(array) # eの累乗を求める np.exp(array) #array同士を足す np.add(array1, array2) #arrayの引数の最大値を取得 np.maxmum(array1, array2) # ランダムのarrayを作る np.random.randn(10) #長さが10の値がランダムのarrayを定義
・arrayの合計、平均、分散、標準偏差をを求める
array = np.array([1,2,3]) #合計 array.sum() #6 #平均 array.mean() #2.0 #分散 array.std() #0.816496580927726 #標準偏差 array.var() #0.6666666666666666
・順番を入れ替え(ソート)
array = np.array([3, 1 ,2]) array.sort() #array([1, 2, 3])
・ファイルの入出力
#npy形式で読み書き array = np.array([1,2,3]) np.save("array", array) #npyファイルを書き込み np.load("array.npy") # 読み込むとarray([1, 2, 3])が返ってくる #txt形式で読み書き np.savetxt("array.txt", array, delimiter=",") #txtファイルを書き込み np.loadtxt("array.txt", delimiter=",") #読み込むとarray([1., 2., 3.])が返ってくる
・値がUniqueかどうか判定
array = [1, 2, 3, 4, 1, 2] np.unique(array) #array([1, 2, 3, 4])
・第2引数が第1引数を含んでいるかどうか判定
array = [1, 2, 3, 4] np.in1d([1, 5, 6], array) #array([ True, False, False])
・配列の一部だけを取り出す(slice機能)
#全部取得 array[:] #[1, 2, 3, 4, 5] #3番目までを取得 array[:3] #[1, 2, 3] #2行2列 array = np.arange(9).reshape(3, 3) array[:2, :3] # array([[0, 1, 2], # [3, 4, 5]])
Numpyの基本的な機能は以上になります。辞書的な感じで使っていただけたらなと思います!