标准化2D Numpy数组:零平均单位方差

2024-04-19 23:05:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个2D Numpy数组,在这个数组中,我想将每列的均值和单位方差正规化为零。由于我主要使用C++,所以我所做的方法是使用循环来遍历列中的元素并执行必要的操作,然后重复对所有列的操作。我想知道一种Python式的方法。

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,表示我在正常化过程中做错了什么。By不等于0,我指的不是很小的数字,这可以归因于浮点不精确。


Tags: 方法numpy元素inputdata单位column数组
1条回答
网友
1楼 · 发布于 2024-04-19 23:05:56

类似于:

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

相关问题 更多 >