LoginSignup
0
2

More than 5 years have passed since last update.

Numpyで行列の平均,和,標準偏差などを求める。+ 行列の要素の操作

Posted at

Numpyの行列形式でデータをもらって誤差等の解析をすることを考える。

関連する関数

それぞれ,和,平均,標準偏差を計算可能。
sum(),average(),std()

このままだと全要素に対して適用してしまうので,
引数にaxis=0と指定することで行方向,axis=1とすれば列方向ごとに使われる。

以下のコードを順番に実行すればわかる。

import numpy as np
R = np.random.rand(5,2)
np.average(R) #0.45752755837863368
np.average(R,axis=1) #array([ 0.48461893,  0.649105  ,  0.47275633,  0.60002684,  0.08113069])
np.average(R,axis=0) #array([ 0.53748554,  0.37756958])

地味な注意点

不偏分散を求めたい時はstd関数にddof=1という引数を追加すること。
今回みたいな例ではデータの観測誤差について議論するので不偏分散は用いないが参考までに。
http://imaimamu.com/archives/1571

要素の置換など

要素の置換はmatlabとほぼ同じ。
https://qiita.com/supersaiakujin/items/d63c73bb7b5aac43898a

条件はTrue,Falseで帰ってくるのでこれを0,1に変換するにはastypeでintを指定する。
が,どうやらTrue,Falseもちゃんと0,1の値として掛け算が出来そう。

特定の行を0にする場合はこちら。

r=np.random.rand(5,1)
R*[r>0.5] #rが0.5より小さい行は全て0になる

特定の条件の行を抜き出すのは一手間かかるがこっち。

r=np.random.rand(5,1)
i,j= np.where(r>0.5) #rが0.5より大きい行がiに入りjには0が入る。
R[i,:] # r>0.5を満たす行だけ抜き出せる。
0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2