(56) numpy配列要素を0~1で正規化

投稿者: | 2014年9月4日

14,976 views

この記事は最終更新から 1977日 が経過しています。

3行5列の乱数配列aを作成する。
ここでは見やすいように各要素を100倍した後に整数化している。

>>> import numpy as np
>>> a = np.random.random((3,5)) * 100
>>> a
array([[ 61.95240209,  19.78842754,  19.66424701,   5.21288021,  10.02728863],
       [ 75.68367629,  66.49158917,   1.50172285,  61.8935986 ,  15.05438068],
       [ 66.41067826,  38.32497801,   2.42314341,  18.44271156,  22.53073152]])
>>> a = a.astype(int)
>>> a
array([[61, 19, 19,  5, 10],
       [75, 66,  1, 61, 15],
       [66, 38,  2, 18, 22]])

配列要素の最小値と最大値を取得する。

>>> vmin = a.min()
>>> vmin
1
>>> vmax = a.max()
>>> vmax
75

配列aの全要素の値を、最小値~最大値の範囲で正規化した配列bを作成する。
※numpyでは、MATLAB,octaveのように(ベクタ),(スカラ)間の四則演算ができる。

>>> b = (a - vmin).astype(float) / (vmax - vmin).astype(float)
>>> b
array([[ 0.81081081,  0.24324324,  0.24324324,  0.05405405,  0.12162162],
       [ 1.        ,  0.87837838,  0.        ,  0.81081081,  0.18918919],
       [ 0.87837838,  0.5       ,  0.01351351,  0.22972973,  0.28378378]])

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です