[NumPy] 5. np.sum, np.std などの集約関数の1次元、2次元配列における使用法

NumPy

はじめに

NumPyは科学技術計算のための強力なライブラリであり、多次元配列操作において様々な集約関数を提供しています。本記事では特に一般的に使用される集約関数であるnp.sum、np.stdなどについて、1次元配列と2次元配列における使用方法とその違いについて解説します。集約関数の適切な使用方法を理解することで、効率的なデータ処理が可能になります。

1次元配列の集約

データの生成

np.random.randint(1, 100, size=9)を使用して、1から100までのランダムな整数値を含む9要素の配列を生成します。

集約関数

合計値

np.sum()で配列内の要素の合計値を求めることができます。

最小値

np.min()で配列内の最小値を求めることができます。

最大値

np.max()で配列内の最大値を求めることができます。

平均値

np.mean()で配列内の要素の平均値を求めることができます。

中央値

np.median()で配列内の要素の中央値を求めることができます。要素数が偶数の場合、2つの中央値の平均値が出力されます。

標準偏差

np.std()で配列の標準偏差を求めることができます。

分散

np.var()で配列の分散を求めることができます。

np.prod()で配列の全要素をかけ合わせた値を求めることができます。

最大値のインデックス

argmaxで配列の最大値のインデックスを求めることができます。

最小値のインデックス

argminで配列の最小値のインデックスを求めることができます。

配列のメソッドとして表記

np.min(data)ではなく、data.min()のように記述しても同じ結果が得られます。

2次元列の集約

データの生成

np.random.randint(1,100,(3,5))とすることで形状が(3,5)であり、要素として1〜100のランダムな値をもつ配列が得られます。

集約関数

合計値

1次元配列と同様に求めることができます。

axis=0で列方向に集約

axis=0と指定することで列方向に集約することができます。

axis=1で行方向に集約

axis=1と指定することで列方向に集約することができます。

2次元配列における最大値のインデックス

最大値のインデックスを求めるnp.argmax()は、配列を1次元に展開したときのインデックスを返します。

これを2次元配列のインデックスとして取得するには、np.unravel_indexを使用します。

np.unravel_index(np.argmax(data2), data2.shape)のように、第1引数にargmaxの結果を、第2引数に配列の形状を指定すると、2次元配列におけるインデックスが返されます。

まとめ

本記事では、NumPyの集約関数であるnp.sum、np.stdなどの1次元配列と2次元配列における使用法について解説しました。これらの関数は軸(axis)パラメータを使用して特定の次元に沿った集計が可能であり、データ分析において重要な役割を果たします。また、デフォルトでは配列全体に対して集計が行われることや、keepdimsパラメータを使って次元を保持する方法も紹介しました。NumPyの集約関数を適切に使いこなすことで、より効率的かつ正確なデータ分析が実現できます。

参考

Sorting, searching, and counting — NumPy v2.3 Manual
Mathematical functions — NumPy v2.3 Manual
[Python] Numpyで多次元配列のargmaxをとりたい - Qiita
使い方 PythonでNumpyを使っている時,多次元配列に対してargmaxやargminを使いたい時があります. 例えば, \begin{bmatrix} 11 & 22 & 33 \ 77 & 88 & 99 \ 44 & 55 &...

コメント