外部モジュールNumPyの配列型データ構造であるndarrayで特定の軸の要素の合計、平均の求め方について説明する。
Numpyを使う際にはimportが必要。しばしばnpと略される。
import numpy as np
1. numpy.sumによる要素の合計
2. numpy.ndarray.sumによる要素の合計
3. numpy.meanによる要素の平均
4. numpy.averageによる要素の平均
5. リファレンス
1. numpy.sumによる要素の合計
sumは1つのndarray内の要素の最大値を求める。引数にaxisを指定すると行ごと、列ごとの合計が求まる。
書式は以下。
numpy.sum(a, axis=None, dtype=None, out=None, keepdims=<no value>, initial=<no value>, where=<no value>)
1次元のndarrayの場合。全要素の合計が求まる。戻り値はスカラー。1軸しかないのでaxisは指定しない。
import numpy as np np.sum([2, 3, 4])
実行結果
9
2行3列の2次元のndarrayの場合。axisを指定しない場合、全要素の合計が求まる。
import numpy as np np.sum([[2,3,4],[6,5,1]])
実行結果
21
2行3列の2次元のndarrayでaxis=0を指定した場合。各列の合計が求まる(行方向、つまり縦に足される)。
import numpy as np np.sum([[2,3,4],[6,5,1]], axis=0)
実行結果
array([8, 8, 5])
2行3列の2次元のndarrayでaxis=1を指定した場合。各行の合計が求まる(列方向、つまり横に足される)。
import numpy as np np.sum([[2,3,4],[6,5,1]], axis=1)
実行結果
array([ 9, 12])
initialに値を与えると、その値が加算された結果となる。
import numpy as np np.sum([[2,3,4],[6,5,1]], axis=1, initial=100)
実行結果
array([109, 112])
whereは要素の採用/不採用を決める。Trueの要素は加算され、Falseの要素は無視される。
各行の1つ目の要素(2,6)はFalseなので無視され、Trueである2つ目、3つ目の要素が合計される。
import numpy as np np.sum([[2,3,4],[6,5,1]], axis=1, where=[False, True, True])
実行結果
array([7, 6])
2. numpy.ndarray.sumによる要素の合計
ndarray.sumはsumと同じ結果が得れる。
ndarray.sum(axis=None, dtype=None, out=None, keepdims=False, initial=0, where=True)
2行3列の2次元のndarrayでaxis=1を指定した場合。各行の合計が求まる(列方向、つまり横に足される)。
import numpy as np a = np.array([[2,3,4],[6,5,1]]) a.sum(axis=1)
実行結果
array([ 9, 12])
3. numpy.meanによる要素の平均
meanは1つのndarray内の要素の平均を求める。引数にaxisを指定すると行ごと、列ごとの平均が求まる。
書式は以下。
numpy.mean(a, axis=None, dtype=None, out=None, keepdims=<no value>, *, where=<no value>)
2行3列の2次元のndarray全要素の平均を求める場合。axisを指定しない。
import numpy as np np.mean([[2,3,4],[6,5,1]])
実行結果
3.5
2行3列の2次元のndarrayでaxis=0を指定、各列の平均が求まる(行方向の平均)
import numpy as np np.mean([[2,3,4],[6,5,1]], axis=0)
実行結果
array([4. , 4. , 2.5])
2行3列の2次元のndarrayでaxis=1を指定、各行の平均が求まる(列方向の平均)
import numpy as np np.mean([[2,3,4],[6,5,1]], axis=1)
実行結果
array([3., 4.])
4. numpy.averageによる要素の平均
averageはmean同様に1つのndarray内の要素の平均を求める。meanと異なる点は、引数にweightsを指定することでウエイトを掛けた平均が求められる点。
書式は以下。
numpy.average(a, axis=None, weights=None, returned=False)
2行3列の2次元のndarrayでaxis=0を指定、各列の平均が求まる(行方向の平均)。meanと同じ結果となる
import numpy as np np.average([[2,3,4],[6,5,1]], axis=0)
実行結果
array([4. , 4. , 2.5])
引数weightsを指定すると要素にそれを掛けた平均が求まる
以下の計算式で計算される。
avg = sum(a * weights) / sum(weights)
次の例ではweightsとして0.5と2を指定している。これにより計算は
(2*0.5+6*2)/(0.5+2)
(3*0.5+5*2)/(0.5+2)
(4*0.5+1*2)/(0.5+2)
となりweightsの掛かった平均が求められる。
import numpy as np np.average([[2,3,4],[6,5,1]], axis=0, weights=[0.5,2])
実行結果
array([5.2, 4.6, 1.6])
5. リファレンス
NumPy > numpy.sum
NumPy > numpy.ndarray.sum
NumPy > numpy.mean
NumPy > numpy.average
0 件のコメント:
コメントを投稿