Python numpy矩阵中的归一化行

Python numpy矩阵中的归一化行,python,numpy,matrix,Python,Numpy,Matrix,我试图使用L2范数(单位长度)规范化numpy矩阵的行 当我这么做的时候,我看到了一个问题 假设我的矩阵“b”如下所示: 现在,当我像下面那样对第一行进行规范化时,它工作得很好 但是,当我尝试通过迭代所有行并转换相同的矩阵b(如下所示)来实现时,它会给我所有的零 你知道为什么会发生这种情况,以及如何得到正确的标准化吗 矩阵行规范化的任何更快的方法,而不必迭代每一行?。但我不想使用sci工具包学习规范化功能 谢谢 问题来自于b具有类型int,因此当您逐行填写时,numpy会自动将计算结果(fl

我试图使用L2范数(单位长度)规范化numpy矩阵的行

当我这么做的时候,我看到了一个问题

假设我的矩阵“b”如下所示:

现在,当我像下面那样对第一行进行规范化时,它工作得很好

但是,当我尝试通过迭代所有行并转换相同的矩阵b(如下所示)来实现时,它会给我所有的零

你知道为什么会发生这种情况,以及如何得到正确的标准化吗

矩阵行规范化的任何更快的方法,而不必迭代每一行?。但我不想使用sci工具包学习规范化功能

谢谢


问题来自于
b
具有类型
int
,因此当您逐行填写时,
numpy
会自动将计算结果(
float
)转换为
int
,因此为零。避免这种情况的一种方法是使用
0.
1.
等使用类型
float
定义
b
。。。或者只是在定义中添加
.astype(float)

这应该可以一次完成计算,也不需要先转换为
float

b = b / np.linalg.norm(b, axis=1, keepdims=True)

这是因为您正在重新定义整个数组,而不是一行一行地更改它,而且
numpy
足够聪明,可以使它
float

try:-从将来的导入分区开始,请将代码放入代码块中。不要使用图像-我们无法复制和运行您的代码。@Shubham Sharma:我不认为来自未来导入部门的
在这种情况下会有所帮助,尽管在Python2上这样做是一种很好的做法(如果在Python3上则完全忽略)。请注意,它是
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。有:
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。