【NumPy入門 np.sum】要素の和を求めるnp.sum関数とarr.sumメソッド

こんにちは、この記事ではnp.arrayの要素の和を計算する関数、np.sum関数を紹介します。

また、この関数はnp.arrayのメソッドとしても実装されています。

NumPyでは、生のPythonで実装された関数ではなく、NumPyに用意された関数を使うことで高速な計算が可能です。

この記事でNumPyを使った効率的な計算の仕方について勉強していきましょう。

np.sum関数の引数と返り値

np.sum関数のパラメータ(引数)の中から、よく使われるものをまとめて紹介します。

参考:SciPy.org

numpy.sum(aaxis=Nonedtype=Noneout=Nonekeepdims=<no value>initial=<no value>)

axisで指定した軸の要素の和を求めます。

Parameters:
a : array_like

和を計算する要素

axis : None(指定しない) or int型 or int型の入ったタプル型, このパラメータはoptionalです。

合計を計算する軸を指定します。

dtype : dtype, optional

返り値のデータ型を指定。指定しなければパラメータから適当な型になります。

out : ndarray, optional

結果を代入する配列を指定できます。指定しなければ新しい配列を作ります。

keepdims : bool, optional
initial : scalar, optional
Returns:
sum_along_axis : ndarray

パラメータに従って計算した合計値を格納した配列を返します。

使い方

以降のコードはJupyterで実行してみてください。

まずはNumPyをimportします。

ついでにサンプル配列も作っておきます。

Out:

基本的な使い方

np.sumもarr.sumも使い方は同じです。

まずはaxisを指定しない場合配列内の要素は全て足し合わされます。

axisで合計値を出す軸を指定

axis=0とすると、列ごとに足し合わされます。

axis=1とすると、行ごとに足し合わされます。

outパラメータで出力値を入れる配列を用意

sumの出力配列と同じshapeの配列を用意して、outに渡すとその配列を上書きして答えを返してくれます。

新しい配列を作らない分だけ高速に動作します。

dtypeで出力配列の型を指定

dtypeを指定しないと、適当な型が割り当てられます。

例えばx3の中身を見てみると(In [14]とOut [14])、float64になっていますね。

これは合計値を計算した配列がfloat64型だったためです。

これを敢えて変更したい場合はdtypeに型を指定しましょう。

NaNが入った配列の要素和を計算する

配列内にNaNが入っている場合、通常のnp.sumやarr.sumでは計算結果がNaNになってしまいます。

この場合、NaNを無視して合計値を出すには、np.nansum関数を使います。

ただし、np.nansum関数は通常のnp.sum関数と比べて計算速度が遅いので、nanが入っている可能性がある場合にだけ使う事をおすすめします。

In [20]:
[計算にかかった時間]
In [21]:
[計算にかかった時間]

まとめ

この記事では、np.arrayの要素の合計を計算する機能、np.sum関数とarr.sumメソッドについて紹介しました。

合計値を計算する関数は非常によく使う機能の一つです。

平均を出す関数などと一緒にしっかりと覚えて、科学計算・機械学習の実装に役立ててください!

今回の記事は下記の記事を参考にしています。
参考記事:

LINEで送る
Pocket

最短でエンジニアを目指すなら侍エンジニア塾

cta_under_bnr

侍エンジニア塾は業界で初めてマンツーマンレッスンを始めたプログラミングスクールです。これまでの指導実績は16,000名を超え、未経験から数多くのエンジニアを輩出しています。

あなたの目的に合わせてカリキュラムを作成し、現役エンジニア講師が専属であなたの学習をサポートするため効率よく学習を進めることができますよ。

無理な勧誘などは一切ありません。まずは無料体験レッスンを受講ください。

無料体験レッスンの詳細はこちら

書いた人

フクロウ

フクロウ

第一言語はPythonです。
皆さんRustやりましょう。

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説