我有一个形状[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,:])
答案 0 :(得分:0)
你的实现确实会沿着行轴进行规范化(我不确定你的第二个维度是什么意思,因为行通常是矩阵的第一个维度,numpy从维度0开始)。您不需要包含冒号,因为它隐含您想要所有行。
请记住在数据矩阵中使用float32
dtype而不是整数dtype,因为它不会自动进行类型转换。
更高效或干净的实施可能是使用sklearn.preprocessing.normalize
。
但请注意,您使用的是标准分数规范化,假设您的数据集是正态分布的。