沿一个特定维度规范化矩阵

时间:2018-05-04 21:22:06

标签: python numpy scipy scikit-learn

我有一个形状[1000,500]的矩阵,我想沿第二维标准化矩阵。以下实施是否正确?

def norm(x):
    return (x - np.mean(x)) / (np.std(x) + 1e-7)

for row_id in range(datamatrix.shape[0]):
    datamatrix[row_id,:] = norm(datamatrix[row_id,:])

1 个答案:

答案 0 :(得分:0)

你的实现确实会沿着行轴进行规范化(我不确定你的第二个维度是什么意思,因为行通常是矩阵的第一个维度,numpy从维度0开始)。您不需要包含冒号,因为它隐含您想要所有行。

请记住在数据矩阵中使用float32 dtype而不是整数dtype,因为它不会自动进行类型转换。

更高效或干净的实施可能是使用sklearn.preprocessing.normalize

但请注意,您使用的是标准分数规范化,假设您的数据集是正态分布的。