libro
www.tuyano.com
初心者のためのJupyter入門

ベクトル・行列の演算 (3/4)

作成:2018-02-03 12:00
更新:2018-02-03 20:46

■ベクトル・行列の統計処理

ベクトル・行列では、その他にもさまざまな演算の機能が用意されています。ここでは特に統計処理でよく使われるものをピックアップしてまとめましょう。


●最小値、最大値
変数 = 《オブジェクト》.min(axis=値 )
変数 = 《オブジェクト》.max(axis=値 )

行列の最大値、最小値を求めて返します。これは、axisという値で計算する方向を指定します。0なら縦(列)方向、1なら横(行)方向の値の中から値を求めます。
m = np.matrix([np.random.randint(100) for i in range(25)])
n = m.reshape((5, 5))
xmn = n.min(axis=0) # 列の最小値
xmx = n.max(axis=0) # 列の最大値
ymn = n.min(axis=1) # 行の最小値
ymx = n.max(axis=1) # 行の最大値
print(xmn)
print(xmx)
print(ymn)
print(ymx)
 ↓
[[ 8  2  4 12  5]]

[[91 65 96 86 99]]

[[ 4]
[25]
[12]
[34]
[ 2]]

[[86]
[99]
[91]
[96]
[87]]

●総和(合計)
変数 = 《オブジェクト》.sum( axis=値 )
ベクトルや行列の総和は、sumメソッドで行なえます。これは計算するオブジェクト内から呼び出します。引数にはaxisという計算する方向を指定する値を用意します。0ならば縦(列)、1ならば横(行)の総和を計算します。
m = np.matrix([[1,2,3],[4,5,6],[7,8,9]])
x = m.sum(axis=0) # 列の和
y = m.sum(axis=1) # 行の和
print(x)
print(y)
 ↓
[12 15 18]
[ 6 15 24]

●分散
変数 = numpy.var(《オブジェクト》)
ベクトル・行列に用意される値の分散(平均との偏差の2乗を平均したもの)を計算します。これは引数に元データとなるベクトル/行列のオブジェクトを指定します。
m = numpy.array([np.random.randint(100) for i in range(100)])
print(numpy.var(m))
 ↓
776.3804    #乱数なのでいろいろ変わる

●中央値
変数 = np.median(《オブジェクト》)
変数 = np.median(《オブジェクト》, axis=数値 )
中央値を求めます。ベクトルの場合、単に引数にベクトルのオブジェクトを指定するだけです。行列の場合、第1引数にオブジェクトを指定し、axisで0または1を指定します。0ならば列、1ならば行の中央値を返します。

なお、matrixでは、行列全体の中央値が求められません。必ずaxisを指定して、行か列のいずれかの方向で処理をする必要があります。adarrayの場合は、axisを省略し、行列全体の中央値を得ることができます。
m = np.matrix([np.random.randint(100) for i in range(25)])
n = m.reshape((5, 5))
xmd = np.median(n, axis=0) # 列の中央値
ymd = np.median(n, axis=1) # 行の中央値
print(xmd)
print(ymd)
 ↓
[[ 38.  61.  21.  60.  30.]]    #乱数なので変わる

[[ 50.]
[ 61.]
[ 30.]
[ 60.]
[ 22.]]

●標準偏差
変数 = np.std(《オブジェクト》, ddof=数値)
変数 = np.std(《オブジェクト》, axis=数値, ddof=数値 )
標準偏差を求めるものです。ベクトルの場合は、引数にオブジェクトを指定してよびだすだけです。行列の場合は、axisで0または1を指定すると、列または行方向に演算をします。axisを省略すると全データからの偏差を演算します。

この他、ddofというオプションも用意されています。これは母集団nの個数から指定の値を引いて偏差を求めます。例えば、ddof=1 とすれば、n - 1から標準偏差を求めます。
m = np.matrix([np.random.randint(100) for i in range(25)])
n = m.reshape((5, 5))
std = n.std() # 全体の標準偏差
xstd = n.std(axis=0) # 列の標準偏差
ystd = n.std(axis=1) # 行の標準偏差
print(std)
print(xstd)
print(ystd)
 ↓
32.9194410645    #乱数なので変わる
[[ 38.64401635  17.51113931  23.82771496  31.6581743   39.00461511]]
[[ 28.89567442]
[ 31.39426699]
[ 33.6273698 ]
[ 27.43282705]
[ 22.20450405]]


※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

※関連コンテンツ

「初心者のためのJupyter入門」に戻る