规范化2D Numpy数组:零均值单位方差

时间:2015-07-01 05:11:15

标签: python numpy

我有一个2D Numpy数组,我希望将每列归一化为零均值和单位方差。由于我主要用于C ++,我所做的方法是使用循环迭代列中的元素并执行必要的操作,然后对所有列重复此操作。我想了解一种pythonic方法。

class_input_data成为我的2D数组。我可以将列的意思理解为:

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 个答案:

答案 0 :(得分:15)

类似的东西:

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.])