実体と情報のはざま

何事にも囚われず。

PythonのNumPyについて基本中の基本を学んだ。。

 ある程度Pythonにも慣れてきたし、データサイエンスっぽい何かをやってみたいと思い立った。
 まずは、まえからずっとやりたかったBL-SOM(バッチ方式の自己組織化マップ)をコーディングしようとSpyderに向かったが…書けない!配列の扱いが全然わからない!C#で画像処理をした時は、画素を行列と見立ててx[i,j]という具合に記述してforで処理を回していったが…Pythonだとどうすりゃいいのかわからない。。
というわけで、基本中の基本を勉強しました。やり方は色々あるようだけど、やっぱNumPyが一番よさそう。
 以下、忘備録。
開発環境:Spyder(Python 3.6)

import numpy as np

a=np.array([2,-4,1])
b=np.array([3,1,-2])
x=np.dot(a,b)#ベクトルの内積
print(x)

x=np.linalg.norm(a-b)#ノルム
print(x)

x=a-b#ベクトルの引き算
print(x)

x=np.zeros((5,3))#ゼロでできた5行3列の行列
print(x)

x=np.random.random((5,3))#乱数でできた5行列の行列
print(x)
print(x[1,1])#行列の要素(1,1)を取り出し。(角が())

x[0,0]=0#行列の要素(0,0)を0に変更
print(x)

以下、結果。
0
5.9160797831
[-1 -5 3]
[[ 0. 0. 0.]
[ 0. 0. 0.]
[ 0. 0. 0.]
[ 0. 0. 0.]
[ 0. 0. 0.]]
[[ 0.66526329 0.12998445 0.89432272]
[ 0.58101282 0.44986365 0.81146389]
[ 0.96562799 0.8162834 0.08969892]
[ 0.07098462 0.34161584 0.96946225]
[ 0.19910363 0.58869816 0.30484134]]
0.449863645793
[[ 0. 0.12998445 0.89432272]
[ 0.58101282 0.44986365 0.81146389]
[ 0.96562799 0.8162834 0.08969892]
[ 0.07098462 0.34161584 0.96946225]
[ 0.19910363 0.58869816 0.30484134]]

次回はBL-SOMに挑戦したい!また基本的なところでつまづかないか心配だが。。
今日は、ここまで!