忘れがちなので、出会ってこれは便利と思った python の numpy の機能をメモしておく。
をしておく。
○ 配列の結合
○ 対角行列を作る
○ 正規化する方法
という配列があるとする。
1Column の中の数値をひとまとまりとして、 0 から 1 の間に正規化することを考える。
min や ptp (peak-to-peak) 関数の引数に 0 を渡す事で、axis 0 (column) 内での最小値や値幅を計算して返すようになる。1 を渡すとaxis 1 (raw) 内の数値セットに対して演算する。
絶対値で正規化するとすると
import numpy as np
をしておく。
○ 配列の結合
>>> x1=np.array([1,2,3])
>>> x2=np.array([4,5,6])
>>> z1=np.array([[1,2,3],[4,5,6],[7,8,9]])
>>> z2=np.array([[11,12],[13,14],[15,16]])
>>> z3=np.array([[21,22,23],[24,25,26],[27,28,29]])
>>> np.c_[x1,x2]
array([[1, 4],
[2, 5],
[3, 6]])
>>> np.r_[x1,x2]
array([1, 2, 3, 4, 5, 6])
>>> np.c_[z1,z2]
array([[ 1, 2, 3, 11, 12],
[ 4, 5, 6, 13, 14],
[ 7, 8, 9, 15, 16]])
>>> np.r_[z1,z3]
array([[ 1, 2, 3],
[ 4, 5, 6],
[ 7, 8, 9],
[21, 22, 23],
[24, 25, 26],
[27, 28, 29]])
>>> np.c_[z1,x2]
array([[1, 2, 3, 4],
[4, 5, 6, 5],
[7, 8, 9, 6]])
>>> np.r_[z1,x1]
は実行できない。
○ 対角行列を作る
>>> np.diag(x1)
array([[1, 0, 0],
[0, 2, 0],
[0, 0, 3]])
○ 正規化する方法
>>> array
array([[ 10.26904011, 0.04298 , -0.71467 ],
[ 10.84101963, 0.164210 , -0.62677997],
[ 15.12874031, 0.06207 , -0.68053001],
[ 15.65050983, 0.06194 , -0.72355002],
[ 42.14241791, 0.07529 , -0.67488998],
[ 18.79310989, 0.08012 , -0.56687999],
[ 23.48911095, 0.08938 , -0.62221998],
[ 24.36981964, 0.09266 , -0.65517998],
[ 40.58003998, 0.15396 , -0.52342999],
[ 11.25899029, 0.049 , -0.69778001]], dtype=float32)
という配列があるとする。
1Column の中の数値をひとまとまりとして、 0 から 1 の間に正規化することを考える。
>>> (array - array.min(0))/array.ptp(0)
array([[ 0. , 0. , 0.04437346],
[ 0.01794537, 1. , 0.48356003],
[ 0.15246893, 0.15746927, 0.21497104],
[ 0.16883901, 0.15639691, 0. ],
[ 1. , 0.26651818, 0.24315427],
[ 0.2674354 , 0.30635977, 0.78288031],
[ 0.41476843, 0.38274354, 0.50634634],
[ 0.44239989, 0.40979955, 0.34164518],
[ 0.95098174, 0.91544998, 1. ],
[ 0.03105884, 0.04965766, 0.12877277]], dtype=float32)
絶対値で正規化するとすると
>>> array/np.abs(array).max(0)
array([[ 0.24367468, 0.261738 , -0.98772717],
[ 0.25724721, 1. , -0.86625659],
[ 0.35899079, 0.37799159, -0.94054312],
[ 0.3713719 , 0.37719992, -1. ],
[ 1. , 0.45849827, -0.9327482 ],
[ 0.44594285, 0.48791179, -0.78347033],
[ 0.55737454, 0.544303 , -0.85995436],
[ 0.57827294, 0.56427747, -0.9055075 ],
[ 0.96292627, 0.93757993, -0.72341919],