2D Numpy配列を正規化する: ゼロ平均単位分散 質問する

2D Numpy配列を正規化する: ゼロ平均単位分散 質問する

2D Numpy 配列があり、各列を平均 0、分散 1 に正規化したいと考えています。私は主に C++ に慣れているので、ループを使用して列内の要素を反復処理し、必要な操作を実行してから、これをすべての列に対して繰り返します。これを行う Python の方法について知りたいです。

を 2D 配列とclass_input_dataします。列の平均は次のように取得できます。

column_mean = numpy.sum(class_input_data, axis = 0)/class_input_data.shape[0]

次に、すべての列から平均を減算します。

class_input_data = class_input_data - column_mean

この時点で、データの平均はゼロになっているはずです。ただし、次の値:

numpy.sum(class_input_data, axis = 0)

0 と等しくないので、正規化で何か間違ったことをしたことになります。0 と等しくないというのは、浮動小数点の不正確さに起因する非常に小さな数値を意味しているわけではありません。

ベストアンサー1

何かのようなもの:

import numpy as np

eg_array = 5 + (np.random.randn(10, 10) * 2)
normed = (eg_array - eg_array.mean(axis=0)) / eg_array.std(axis=0)

normed.mean(axis=0)
Out[14]: 
array([  1.16573418e-16,  -7.77156117e-17,  -1.77635684e-16,
         9.43689571e-17,  -2.22044605e-17,  -6.09234885e-16,
        -2.22044605e-16,  -4.44089210e-17,  -7.10542736e-16,
         4.21884749e-16])

normed.std(axis=0)
Out[15]: array([ 1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.])

おすすめ記事