trsing’s diary

勉強、読んだ本、仕事で調べたこととかのメモ。

「機械学習のエッセンス」に出てくるpython関係のメモ

読み進めるうちに順次増やしていく(予定)

numpy

numpy.array(object,dtype=None,copy=True,order='K',subok=False,ndmin=0)
numpy.array([0,1,2])#1次元配列
numpy.array([[0,1,2],[3,4,5]])#2次元配列

dtypeの配列を作成する。1次元の場合objectに[要素]。2次元の場合objectに[ [要素]]。


numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)

区間[start,stop]でnum個の等間隔な値を要素に持つ1次元配列を返す。


numpy.zeros(shape,dtype=float,order='C')
numpy.ones(shape,dtype=float,order='C')
numpy.empty(shape,dtype=float,order='C')
numpy.zeros(5)      #要素数5の1次元配列
numpy.zeros((2,3))  #形状が(2,3)の2次元配列

要素が0/1/未初期化のshape,typeの配列を返す。shapeはintかintのタプル。


numpy.r_[a,b]

a,bが2次元配列:a,bを縦方向に連結する(2次元配列)
a,bが1次元配列:a,bを連結(1次元配列)

numpy.c_[a,b]

a,bが2次元配列:a,bを横方向に連結する(2次元配列)
a,bが1次元配列:a,bそれぞれを列として横方向に連結(2次元配列)


numpy.dot(a,b)
a.dot(b)
a@b

行列積を返す。1次元配列の場合自動的に解釈(左側にあれば横ベクトル、右側にあれば縦ベクトルと解釈)

numpy.random

numpy.random.rand(d1,d2,...,dn)
numpy.random.rand(2,3)   #(2,3)の2次元配列を返す
numpy.random.rand(3)     #要素数3の1次元配列を返す
numpy.random.rand()      #浮動小数点を返す

指定された次元の配列を返す。指定がない場合単なる浮動小数点を返す。要素は範囲[0,1)のランダムな浮動小数点。

numpy.random.randint(low,high=None,size=None,dtype='l')
numpy.random.randint(5,size=(3,3))   #(3,3)の配列を返す。要素は[0,5)
numpy.random.randint(5,size=3)       #要素数3の1次元配列を返す。

範囲[low,high)のランダムな整数を返す。high=Noneの場合範囲は[0,low)。sizeを指定すると配列を返す。

numpy.linalg

numpy.linalg.inv(a)      #aの逆行列を返す
numpy.linalg.solve(a,b)  #ax=bの解(x=inv(a)b)を返す

scipy.linalg

scipy.linalg.lu_factor(a)        #aのLU分解(a=PLU)P,LUを返す
scipy.linalg.lu_solve((lu,p),b)  #PLUx=bの解(x=inv(PLU)b)を返す

numpy.ndarrayの属性

shape    #配列の次元のタプル
ndim     #配列の次元数
size     #配列の要素数
T        #配列の転置(2次元以上の場合。1次元の場合そのまま)

numpy.ndarrayのメソッド

reshape(shape)      #要素は同じで配列の形状がshapeである配列を返す
resize(new_shape)   #配列の形状をnew_shapeに変更する
ravel()             #1次元の配列を返す


sum([axis])   #合計
mean([axis])  #平均
max([axis])   #最大値
min([axis])   #最小値

axis=0で行方向、axis=1で列方向 ※ndarrayで1次元配列と行数が1or列数が1の2次元配列は別の物

ブロードキャスト

ndarrayに対して演算を行う場合に次元数や形状を自動的に調整する

numpy.exp(a)
numpy.log(a)
numpy.sqrt(a)

配列aの要素それぞれに対して演算を行う。 演算子(+、*、**、>=)などについても同様


リファレンス
NumPy Reference — NumPy v1.15 Manual