Pynote

Python、機械学習、画像処理について

numpy - 統計量を計算する関数

概要

numpy の統計量を計算する関数を整理する。

名前 説明
numpy.amin 最小値を計算する。
numpy.amax 最大値を計算する。
numpy.mean 平均を計算する。
numpy.median メディアンを計算する。
numpy.percentile パーセンタイルを計算する。
numpy.var 分散を計算する。
numpy.std 標準偏差を計算する。
numpy.average 重み付き平均を計算する。
numpy.quantile 分位数を計算する。
numpy.nanmin NaN を無視して、最小値を計算する。
numpy.nanmax NaN を無視して、最大値を計算する。
numpy.nanmean NaN を無視して、平均を計算する。
numpy.nanmedian NaN を無視して、メディアンを計算する。
numpy.nanpercentile NaN を無視して、パーセンタイルを計算する。
numpy.nanvar NaN を無視して、分散を計算する。
numpy.nanstd NaN を無視して、標準偏差を計算する。
numpy.nanquantile NaN を無視して、分位数を計算する。
numpy.corrcoef 相関係数を計算する。
numpy.correlate 相関を計算する。
numpy.cov 分散共分散行列を計算する。

numpy.amin

最小値を計算する。

関数

numpy.amin(a, axis=None, out=None, keepdims=<no value>, initial=<no value>)

例 axis を指定しない場合は、全要素の最小値を計算する。

a = np.array([1, 5, 7, 5, 7])
print(np.amin(a))  # 1

a = np.array([[-1, -2,  4],
              [-3,  8,  5],
              [0,  4,  5]])
print(np.amin(a))  # -3

例 axis を指定した場合

a = np.array([[-1, -2,  4],
              [-3,  8,  5],
              [0,  4,  5]])
print(np.amin(a, axis=0))  # [-3 -2  4]
print(np.amin(a, axis=1))  # [-2 -3  0]

numpy.amax

最大値を計算する。

関数

numpy.amax(a, axis=None, out=None, keepdims=<no value>, initial=<no value>)

例 axis を指定しない場合は、全要素の最大値を計算する。

a = np.array([1, 5, 7, 5, 7])
print(np.amax(a))  # 7

a = np.array([[-1, -2,  4],
              [-3,  8,  5],
              [0,  4,  5]])
print(np.amax(a))  # 8

例 axis を指定した場合

a = np.array([[-1, -2,  4],
              [-3,  8,  5],
              [0,  4,  5]])
print(np.amax(a, axis=0))  # [0 8 5]
print(np.amax(a, axis=1))  # [4 8 5]

numpy.mean

平均を計算する。

関数

numpy.mean(a, axis=None, dtype=None, out=None, keepdims=<no value>)

例 axis を指定しない場合は、全要素の平均を計算する。

a = np.array([1, 5, 7, 5, 7])
print(np.mean(a))  # 5.0

a = np.array([[-1, -2,  4],
              [-3,  8,  5],
              [0,  4,  5]])
print(np.mean(a))  # 2.2222222222222223

例 axis を指定した場合

a = np.array([[-1, -2,  4],
              [-3,  8,  5],
              [0,  4,  5]])
print(np.mean(a, axis=0))  # [-1.33333333  3.33333333  4.66666667]
print(np.mean(a, axis=1))  # [0.33333333 3.33333333 3.        ]

numpy.median

メディアンを計算する。

関数

numpy.median(a, axis=None, out=None, overwrite_input=False, keepdims=False)

例 axis を指定しない場合は、全要素のメディアンを計算する。

a = np.array([1, 5, 7, 5, 7])
print(np.median(a))  # 5.0

a = np.array([[-1, -2,  4],
              [-3,  8,  5],
              [0,  4,  5]])
print(np.median(a))  # 4.0

例 axis を指定した場合

a = np.array([[-1, -2,  4],
              [-3,  8,  5],
              [0,  4,  5]])
print(np.median(a, axis=0))  # [-1.  4.  5.]
print(np.median(a, axis=1))  # [-1.  5.  4.]

numpy.percentile

パーセンタイルを計算する。

関数

numpy.percentile(a, q, axis=None, out=None, overwrite_input=False, interpolation='linear', keepdims=False)

例 axis を指定しない場合は、全要素のパーセンタイルを計算する。

a = np.array([1, 5, 7, 5, 7])
print(np.percentile(a, 30))  # 5.0

a = np.array([[-1, -2,  4],
              [-3,  8,  5],
              [0,  4,  5]])
print(np.percentile(a, 30))  # -0.6000000000000001

例 axis を指定した場合

a = np.array([[-1, -2,  4],
              [-3,  8,  5],
              [0,  4,  5]])
print(np.percentile(a, 30, axis=0))  # [-1.8  1.6  4.6]
print(np.percentile(a, 30, axis=1))  # [-1.4  1.8  2.4]

numpy.var

分散を計算する。

関数

numpy.var(a, axis=None, dtype=None, out=None, ddof=0, keepdims=<no value>)

例 axis を指定しない場合は、全要素の分散を計算する。

a = np.array([1, 5, 7, 5, 7])
print(np.var(a))  # 4.8

a = np.array([[-1, -2,  4],
              [-3,  8,  5],
              [0,  4,  5]])
print(np.var(a))  # 12.839506172839506

例 axis を指定した場合

a = np.array([[-1, -2,  4],
              [-3,  8,  5],
              [0,  4,  5]])
print(np.var(a, axis=0))  # [ 1.55555556 16.88888889  0.22222222]
print(np.var(a, axis=1))  # [ 6.88888889 21.55555556  4.66666667]

numpy.std

標準偏差を計算する。

関数

numpy.std(a, axis=None, dtype=None, out=None, ddof=0, keepdims=<no value>)

例 axis を指定しない場合は、全要素の標準偏差を計算する。

a = np.array([1, 5, 7, 5, 7])
print(np.std(a))  # 2.1908902300206643

a = np.array([[-1, -2,  4],
              [-3,  8,  5],
              [0,  4,  5]])
print(np.std(a))  # 3.5832256659104664

例 axis を指定した場合

a = np.array([[-1, -2,  4],
              [-3,  8,  5],
              [0,  4,  5]])
print(np.std(a, axis=0))  # [1.24721913 4.10960934 0.47140452]
print(np.std(a, axis=1))  # [2.62466929 4.64279609 2.1602469 ]

numpy.average

重み付き平均を計算する。

関数

numpy.average(a, axis=None, weights=None, returned=False)

例 weights を指定しない場合は、numpy.mean() と同じで平均を計算する。

a = np.array([1, 5, 7, 5, 7])
print(np.average(a))  # 5.0

例 weights を指定した場合、重み付き平均を計算する。

weights = [1, 2, 3, 4, 5]
print(np.average(a, weights=weights))  # 5.8

numpy.quantile

分位数を計算する。numpy.percentile() は q を [0, 100] で指定するのに対して、こちらは [0, 1] で指定する。
それ以外の挙動は同じ。

関数

numpy.quantile(a, q, axis=None, out=None, overwrite_input=False, interpolation='linear', keepdims=False)

例 axis を指定しない場合は、全要素の分位数を計算する。

a = np.array([1, 5, 7, 5, 7])
print(np.quantile(a, 0.3))  # 5.0

a = np.array([[-1, -2,  4],
              [-3,  8,  5],
              [0,  4,  5]])
print(np.quantile(a, 0.3))  # -0.6000000000000001

例 axis を指定した場合

a = np.array([[-1, -2,  4],
              [-3,  8,  5],
              [0,  4,  5]])
print(np.percentile(a, 0.3, axis=0))  # [-1.8  1.6  4.6]
print(np.percentile(a, 0.3, axis=1))  # [-1.4  1.8  2.4]

numpy.nanmin

NaN を無視して、最小値を計算する。

関数

numpy.nanmin(a, axis=None, out=None, keepdims=<no value>)

numpy.nanmax

NaN を無視して、最大値を計算する。

関数

numpy.nanmax(a, axis=None, out=None, keepdims=<no value>)

numpy.nanmean

NaN を無視して、平均を計算する。

関数

numpy.nanmean(a, axis=None, dtype=None, out=None, keepdims=<no value>)

numpy.nanmedian

NaN を無視して、メディアンを計算する。

関数

numpy.nanmedian(a, axis=None, out=None, overwrite_input=False, keepdims=<no value>)

numpy.nanpercentile

NaN を無視して、パーセンタイルを計算する。

関数

numpy.nanpercentile(a, q, axis=None, out=None, overwrite_input=False, interpolation='linear', keepdims=<no value>)

numpy.nanvar

NaN を無視して、分散を計算する。

関数

numpy.nanvar(a, axis=None, dtype=None, out=None, ddof=0, keepdims=<no value>)

numpy.nanstd

NaN を無視して、標準偏差を計算する。

関数

numpy.nanstd(a, axis=None, dtype=None, out=None, ddof=0, keepdims=<no value>)

numpy.nanquantile

NaN を無視して、分位数を計算する。

関数

numpy.nanquantile(a, q, axis=None, out=None, overwrite_input=False, interpolation='linear', keepdims=<no value>)

numpy.corrcoef

相関行列を計算する。

関数

numpy.corrcoef(x, y=None, rowvar=True, bias=<no value>, ddof=<no value>)

# 2つのデータを2つの1次元配列で渡す場合
a = np.array([50, 60, 70, 80, 90])
b = np.array([40, 70, 90, 60, 100])

print(np.corrcoef(a, b))
# [[1.        0.7284928]
#  [0.7284928 1.       ]]

# 2つのデータを (2, N) の配列で渡す場合
# つまり、2つのデータが1行目、2行目に対応している。
a = np.array([[50, 60, 70, 80, 90],
              [40, 70, 90, 60, 100]])
print(np.corrcoef(a))
# [[1.        0.7284928]
#  [0.7284928 1.       ]]

# 2つのデータを (N, 2) の配列で渡す場合
# つまり、2つのデータが1列目、2列目に対応している。
a = np.array([[50, 40],
              [60, 70],
              [70, 90],
              [80, 60],
              [90, 100]])
print(np.corrcoef(a, rowvar=False))
# [[1.        0.7284928]
#  [0.7284928 1.       ]]

numpy.correlate

相互相関を計算する。

関数

numpy.correlate(a, v, mode='valid')

a = np.array([1, 2, 3])
b = np.array([0, 1, 0.5])

print(np.correlate(a, b))  # [3.5]

numpy.cov

分散共分散行列を計算する。

関数

numpy.cov(m, y=None, rowvar=True, bias=False, ddof=None, fweights=None, aweights=None)

# 2つのデータを2つの1次元配列で渡す場合
a = np.array([50, 60, 70, 80, 90])
b = np.array([40, 70, 90, 60, 100])

print(np.cov(a, b))
# [[250. 275.]
#  [275. 570.]]

# 2つのデータを (2, N) の配列で渡す場合
# つまり、2つのデータが1行目、2行目に対応している。
a = np.array([[50, 60, 70, 80, 90],
              [40, 70, 90, 60, 100]])
print(np.cov(a))
# [[250. 275.]
#  [275. 570.]]

# 2つのデータを (N, 2) の配列で渡す場合
# つまり、2つのデータが1列目、2列目に対応している。
a = np.array([[50, 40],
              [60, 70],
              [70, 90],
              [80, 60],
              [90, 100]])
print(np.cov(a, rowvar=False))
# [[250. 275.]
#  [275. 570.]]