目次
概要
NumPy の総和、総乗、累積和、累積積を計算する関数について解説します。
関数一覧
numpy.sum
指定された軸方向に、配列の要素の総和を計算します。
numpy.sum(a, axis=None, dtype=None, out=None, keepdims=<no value>, initial=<no value>)
引数
名前 | 型 | デフォルト値 |
---|---|---|
a | array_like | |
入力配列。 | ||
axis | None int tuple of ints | None |
総和を計算する軸の方向。axis=None の場合、入力配列のすべての要素の総和を計算します。 | ||
dtype | dtype | None |
返される配列の型。a.dtype が Python の整数型以上の精度であれば、a.dtype が使用されます。その場合、a.dtype が符号なしの場合は、Python の整数型と同じ精度の符号なし整数が使用されます。 | ||
out | ndarray | None |
出力配列。期待される出力と同じ形状でなければなりませんが、出力の型は必要に応じてキャストされます。 | ||
keepdims | bool | |
True の場合、縮小される軸は、サイズ1として残されます。 | ||
initial | scalar | |
総和の計算を開始する初期値。 |
返り値
名前 | 説明 | ||
---|---|---|---|
sum_along_axis | 出力配列。out を指定した場合は、その参照が返されます. |
axis
axis
で総和を計算する軸を指定できます。
In [1]:
import numpy as np
a = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
print("axis=None", np.sum(a), sep="\n")
print("axis=0", np.sum(a, axis=0), sep="\n")
print("axis=1", np.sum(a, axis=1), sep="\n")
axis=None 45 axis=0 [12 15 18] axis=1 [ 6 15 24]
In [2]:
a = np.array([[[1, 2, 3],
[4, 5, 6],
[7, 8, 9]],
[[11, 12, 13],
[14, 15, 16],
[17, 18, 19]]])
print("axis=(1, 2)", np.sum(a, axis=(1, 2)), sep="\n")
axis=(1, 2) [ 45 135]
keepdims
keepdims=True
の場合、 縮小される軸は、サイズ1として残されます。
In [3]:
import numpy as np
a = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
print("axis=None", np.sum(a, keepdims=True), sep="\n")
print("axis=0", np.sum(a, axis=0, keepdims=True), sep="\n")
print("axis=1", np.sum(a, axis=1, keepdims=True), sep="\n")
a = np.array([[[1, 2, 3],
[4, 5, 6],
[7, 8, 9]],
[[11, 12, 13],
[14, 15, 16],
[17, 18, 19]]])
print(np.sum(a, axis=(1, 2), keepdims=True))
axis=None [[45]] axis=0 [[12 15 18]] axis=1 [[ 6] [15] [24]] [[[ 45]] [[135]]]
numpy.prod
指定された軸方向に、配列の要素の総乗を計算します。
numpy.prod(a, axis=None, dtype=None, out=None, keepdims=<no value>, initial=<no value>)
引数
名前 | 型 | デフォルト値 |
---|---|---|
a | array_like | |
入力配列。 | ||
axis | None int tuple of ints | None |
総乗を計算する軸の方向。axis=None の場合、入力配列のすべての要素の総乗を計算します。 | ||
dtype | dtype | None |
返される配列の型。a.dtype が Python の整数型以上の精度であれば、a.dtype が使用されます。その場合、a.dtype が符号なしの場合は、Python の整数型と同じ精度の符号なし整数が使用されます。 | ||
out | ndarray | None |
出力配列。期待される出力と同じ形状でなければなりませんが、出力の型は必要に応じてキャストされます。 | ||
keepdims | bool | |
True の場合、縮小される軸は、サイズ1として残されます。 | ||
initial | scalar | |
総乗の計算を開始する初期値。 |
返り値
名前 | 説明 | ||
---|---|---|---|
product_along_axis | 出力配列。out を指定した場合は、その参照が返されます. |
サンプルコード
In [4]:
a = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
print("axis=None", np.prod(a), sep="\n")
print("axis=0", np.prod(a, axis=0), sep="\n")
print("axis=1", np.prod(a, axis=1), sep="\n")
axis=None 362880 axis=0 [ 28 80 162] axis=1 [ 6 120 504]
numpy.cumsum
指定された軸方向に、配列の要素の累積和を計算します。
numpy.cumsum(a, axis=None, dtype=None, out=None)
引数
名前 | 型 | デフォルト値 |
---|---|---|
a | array_like | |
入力配列。 | ||
axis | int | None |
累積和を計算する軸の方向。axis=None の場合、入力配列を1次元配列にして、累積和を計算します。 | ||
dtype | dtype | None |
返される配列の型。a.dtype が Python の整数型以上の精度であれば、a.dtype が使用されます。その場合、a.dtype が符号なしの場合は、Python の整数型と同じ精度の符号なし整数が使用されます。 | ||
out | ndarray | None |
出力配列。期待される出力と同じ形状でなければなりませんが、出力の型は必要に応じてキャストされます。 |
返り値
名前 | 説明 | ||
---|---|---|---|
cumsum_along_axis | 出力配列。out を指定した場合は、その参照が返されます. |
サンプルコード
In [5]:
a = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
print("axis=None", np.cumsum(a), sep="\n")
print("axis=0", np.cumsum(a, axis=0), sep="\n")
print("axis=1", np.cumsum(a, axis=1), sep="\n")
axis=None [ 1 3 6 10 15 21 28 36 45] axis=0 [[ 1 2 3] [ 5 7 9] [12 15 18]] axis=1 [[ 1 3 6] [ 4 9 15] [ 7 15 24]]
numpy.cumprod
指定された軸方向に、配列の要素の累積積を計算します
numpy.cumprod(a, axis=None, dtype=None, out=None)
引数
名前 | 型 | デフォルト値 |
---|---|---|
a | array_like | |
入力配列。 | ||
axis | int | None |
累積積を計算する軸の方向。axis=None の場合、入力配列を1次元配列にして、累積積を計算します。 | ||
dtype | dtype | None |
返される配列の型。a.dtype が Python の整数型以上の精度であれば、a.dtype が使用されます。その場合、a.dtype が符号なしの場合は、Python の整数型と同じ精度の符号なし整数が使用されます。 | ||
out | ndarray | None |
出力配列。期待される出力と同じ形状でなければなりませんが、出力の型は必要に応じてキャストされます。 |
返り値
名前 | 説明 | ||
---|---|---|---|
cumprod | 出力配列。out を指定した場合は、その参照が返されます. |
サンプルコード
In [6]:
a = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
print("axis=None", np.cumprod(a), sep="\n")
print("axis=0", np.cumprod(a, axis=0), sep="\n")
print("axis=1", np.cumprod(a, axis=1), sep="\n")
axis=None [ 1 2 6 24 120 720 5040 40320 362880] axis=0 [[ 1 2 3] [ 4 10 18] [ 28 80 162]] axis=1 [[ 1 2 6] [ 4 20 120] [ 7 56 504]]
numpy.nansum
NaN は 0 として、指定された軸方向に、配列の要素の総和を計算します。
numpy.nansum(a, axis=None, dtype=None, out=None, keepdims=<no value>)
引数
名前 | 型 | デフォルト値 |
---|---|---|
a | array_like | |
入力配列。 | ||
axis | {int, tuple of int, None} | None |
総和を計算する軸の方向。axis=None の場合、入力配列のすべての要素の総和を計算します。 | ||
dtype | data-type | None |
返される配列の型。a.dtype が Python の整数型以上の精度であれば、a.dtype が使用されます。その場合、a.dtype が符号なしの場合は、Python の整数型と同じ精度の符号なし整数が使用されます。 | ||
out | ndarray | None |
出力配列。期待される出力と同じ形状でなければなりませんが、出力の型は必要に応じてキャストされます。 | ||
keepdims | bool | |
True の場合、縮小される軸は、サイズ1として残されます。 |
返り値
名前 | 説明 | ||
---|---|---|---|
nansum | 出力配列。out を指定した場合は、その参照が返されます. |
サンプルコード
In [7]:
a = np.array([[1, 2, np.nan],
[4, 5, 6],
[7, np.nan, 9]])
print("axis=None", np.nansum(a), sep="\n")
print("axis=0", np.nansum(a, axis=0), sep="\n")
print("axis=1", np.nansum(a, axis=1), sep="\n")
axis=None 34.0 axis=0 [12. 7. 15.] axis=1 [ 3. 15. 16.]
numpy.nanprod
NaN は 1 として、指定された軸方向に、配列の要素の総乗を計算します。
numpy.nanprod(a, axis=None, dtype=None, out=None, keepdims=<no value>)
引数
名前 | 型 | デフォルト値 |
---|---|---|
a | array_like | |
入力配列。 | ||
axis | {int, tuple of int, None} | None |
総乗を計算する軸の方向。axis=None の場合、入力配列のすべての要素の総乗を計算します。 | ||
dtype | data-type | None |
返される配列の型。a.dtype が Python の整数型以上の精度であれば、a.dtype が使用されます。その場合、a.dtype が符号なしの場合は、Python の整数型と同じ精度の符号なし整数が使用されます。 | ||
out | ndarray | None |
出力配列。期待される出力と同じ形状でなければなりませんが、出力の型は必要に応じてキャストされます。 | ||
keepdims | bool | |
True の場合、縮小される軸は、サイズ1として残されます。 |
返り値
名前 | 説明 | ||
---|---|---|---|
nanprod | 出力配列。out を指定した場合は、その参照が返されます. |
サンプルコード
In [8]:
a = np.array([[1, 2, np.nan],
[4, 5, 6],
[7, np.nan, 9]])
print("axis=None", np.nanprod(a), sep="\n")
print("axis=0", np.nanprod(a, axis=0), sep="\n")
print("axis=1", np.nanprod(a, axis=1), sep="\n")
axis=None 15120.0 axis=0 [28. 10. 54.] axis=1 [ 2. 120. 63.]
numpy.nancumsum
NaN は 0 として、指定された軸方向に、配列の要素の累積和を計算します。
numpy.nancumsum(a, axis=None, dtype=None, out=None)
引数
名前 | 型 | デフォルト値 |
---|---|---|
a | array_like | |
入力配列。 | ||
axis | int | None |
累積和を計算する軸の方向。axis=None の場合、入力配列を1次元配列にして、累積和を計算します。 | ||
dtype | dtype | None |
返される配列の型。a.dtype が Python の整数型以上の精度であれば、a.dtype が使用されます。その場合、a.dtype が符号なしの場合は、Python の整数型と同じ精度の符号なし整数が使用されます。 | ||
out | ndarray | None |
出力配列。期待される出力と同じ形状でなければなりませんが、出力の型は必要に応じてキャストされます。 |
返り値
名前 | 説明 | ||
---|---|---|---|
nancumsum | 出力配列。out を指定した場合は、その参照が返されます. |
サンプルコード
In [9]:
a = np.array([[1, 2, np.nan],
[4, 5, 6],
[7, np.nan, 9]])
print("axis=None", np.nancumsum(a), sep="\n")
print("axis=0", np.nancumsum(a, axis=0), sep="\n")
print("axis=1", np.nancumsum(a, axis=1), sep="\n")
axis=None [ 1. 3. 3. 7. 12. 18. 25. 25. 34.] axis=0 [[ 1. 2. 0.] [ 5. 7. 6.] [12. 7. 15.]] axis=1 [[ 1. 3. 3.] [ 4. 9. 15.] [ 7. 7. 16.]]
numpy.nancumprod
NaN は 1 として、指定された軸方向に、配列の要素の累積積を計算します
numpy.nancumprod(a, axis=None, dtype=None, out=None)
引数
名前 | 型 | デフォルト値 |
---|---|---|
a | array_like | |
入力配列。 | ||
axis | int | None |
累積積を計算する軸の方向。axis=None の場合、入力配列を1次元配列にして、累積積を計算します。 | ||
dtype | dtype | None |
返される配列の型。a.dtype が Python の整数型以上の精度であれば、a.dtype が使用されます。その場合、a.dtype が符号なしの場合は、Python の整数型と同じ精度の符号なし整数が使用されます。 | ||
out | ndarray | None |
出力配列。期待される出力と同じ形状でなければなりませんが、出力の型は必要に応じてキャストされます。 |
返り値
名前 | 説明 | ||
---|---|---|---|
nancumprod | 出力配列。out を指定した場合は、その参照が返されます. |
サンプルコード
In [10]:
a = np.array([[1, 2, np.nan],
[4, 5, 6],
[7, np.nan, 9]])
print("axis=None", np.nancumprod(a), sep="\n")
print("axis=0", np.nancumprod(a, axis=0), sep="\n")
print("axis=1", np.nancumprod(a, axis=1), sep="\n")
axis=None [1.000e+00 2.000e+00 2.000e+00 8.000e+00 4.000e+01 2.400e+02 1.680e+03 1.680e+03 1.512e+04] axis=0 [[ 1. 2. 1.] [ 4. 10. 6.] [28. 10. 54.]] axis=1 [[ 1. 2. 2.] [ 4. 20. 120.] [ 7. 7. 63.]]
numpy.trace
対角成分の総和を計算します。
numpy.trace(a, offset=0, axis1=0, axis2=1, dtype=None, out=None)
引数
名前 | 型 | デフォルト値 |
---|---|---|
a | array_like | |
入力配列。 | ||
offset | int | 0 |
対角線の位置。0 は主対角線を指し、正の値は上の対角線を指し、負の値は下の対角線を指します。 | ||
axis1, axis2 | int | |
対角線を取る2次元の部分配列の第1軸と第2軸として使用される軸。デフォルトは、最初の2つの軸が使用されます。 | ||
dtype | dtype | None |
返される配列の型。a.dtype が Python の整数型以上の精度であれば、a.dtype が使用されます。その場合、a.dtype が符号なしの場合は、Python の整数型と同じ精度の符号なし整数が使用されます。 | ||
out | ndarray | None |
出力配列。期待される出力と同じ形状でなければなりませんが、出力の型は必要に応じてキャストされます。 |
返り値
名前 | 説明 | ||
---|---|---|---|
sum_along_diagonals | 出力配列。out を指定した場合は、その参照が返されます. |
サンプルコード
In [11]:
a = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
print(np.trace(a))
15
offset
引数 offset
で対角線の位置を指定できます。
In [12]:
a = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
print("offset=0", np.trace(a, offset=0), sep="\n")
print("offset=0", np.trace(a, offset=1), sep="\n")
print("offset=-1", np.trace(a, offset=-1), sep="\n")
offset=0 15 offset=0 8 offset=-1 12
コメント