Python numpy阵列的标准化

Python numpy阵列的标准化,python,numpy,Python,Numpy,我试图标准化一个形状(M,N)的numpy数组,使其列平均值为0。我想我已经正确地使用了标准化公式,其中x是随机变量,z是x的标准化版本 z=(x-平均值(x))/std(x) 但结果数组的列平均值不是0。它们是非常小的数字,但不是零。欢迎任何关于我的误解或错误的见解。这是我的密码: import numpy as np X = np.load('data/filename.npy').astype('float') XNormed = (X - np.mean(X, axis=0))/np.

我试图标准化一个形状(M,N)的numpy数组,使其列平均值为0。我想我已经正确地使用了标准化公式,其中x是随机变量,z是x的标准化版本

z=(x-平均值(x))/std(x)

但结果数组的列平均值不是0。它们是非常小的数字,但不是零。欢迎任何关于我的误解或错误的见解。这是我的密码:

import numpy as np

X = np.load('data/filename.npy').astype('float')
XNormed = (X - np.mean(X, axis=0))/np.std(X, axis=0)
column_mean = np.mean(XNormed, axis=0)
print(column_mean)

您的代码是正确的,但正如您在自己问题的公式中所提到的,您需要除以标准偏差,而不是数据范围(如代码中所述)。下面使用numpy的std()的行应该会更正它:

XNormed = (X - X.mean())/(X.std())

您的代码是正确的,但正如您在自己问题的公式中所提到的,您需要除以标准偏差,而不是数据范围(如代码中所述)。下面使用numpy的std()的行应该会更正它:

XNormed = (X - X.mean())/(X.std())

试着把数字转换成整数,它应该会自己落地。我知道。但我想知道为什么这不起作用。因为它不应该依赖于数据类型或舍入问题。应该吗?这是处理浮点数的人工制品。如果需要更高的精度,请使用类型
np.float64
。谢谢Chris。我试试这个。:)试着把数字转换成整数,它应该会自己落地。我知道。但我想知道为什么这不起作用。因为它不应该依赖于数据类型或舍入问题。应该吗?这是处理浮点数的人工制品。如果需要更高的精度,请使用类型
np.float64
。谢谢Chris。我试试这个。:)你好很抱歉给你带来了困惑。我在尝试一些东西,但在发布之前忘记了把它改回去。更新了代码。我只使用标准偏差来计算XNormed.Hi。很抱歉给你带来了困惑。我在尝试一些东西,但在发布之前忘记了把它改回去。更新了代码。我只使用标准偏差来计算XNormed。