Python 用numpy规范化矩阵

Python 用numpy规范化矩阵,python,numpy,normalization,Python,Numpy,Normalization,np.linalg.norm(x,axis=1,keepdims=True)返回什么 我有一个矩阵np.array([[3.0,4.0],[1,2]])。我试图规范化矩阵的每一行。答案应该是np.array([[0.6,0.8],[0.4472136,0.89442719]]),但我无法理解代码是如何得到答案的 代码如下: x = np.array([[3.0,4.0],[1, 2]]) norms = np.linalg.norm(x, axis = 1, keepdims = True)

np.linalg.norm(x,axis=1,keepdims=True)
返回什么

我有一个矩阵
np.array([[3.0,4.0],[1,2]])
。我试图规范化矩阵的每一行。答案应该是
np.array([[0.6,0.8],[0.4472136,0.89442719]])
,但我无法理解代码是如何得到答案的

代码如下:

x  = np.array([[3.0,4.0],[1, 2]])
norms = np.linalg.norm(x, axis = 1, keepdims = True)
x /= norms
这段代码应该给出标准化的x,但我不明白
np.linalg.norm()
返回的是什么。

np.linalg.norm(x,axis=1,keepdims=True)
在每一行中都这样做(对于x):

np.sqrt(3**2+4**2)
用于x的第1行,其中给出了5

np.sqrt(1**2+2**2)
对于x的第2行,给出了2.23

这个向量
[5,2.23]
就是
范数
变量

然后将x中的所有值除以该
规范
变量,该变量应给出
np.array([[0.6,0.8],[0.4472136,0.89442719]])
。我希望这有帮助

另请参见

np.linalg.norm(x,axis=1,keepdims=True)
在每一行中都这样做(对于x):

np.sqrt(3**2+4**2)
用于x的第1行,其中给出了5

np.sqrt(1**2+2**2)
对于x的第2行,给出了2.23

这个向量
[5,2.23]
就是
范数
变量

然后将x中的所有值除以该
规范
变量,该变量应给出
np.array([[0.6,0.8],[0.4472136,0.89442719]])
。我希望这有帮助


另请参见

给出L2范数并保持维度数不变,即缩小的维度保持为单态dim(长度轴=1)。如果您的问题可以用a回答,则您在这里提问之前没有付出所需的最小努力。这里没有提到L2范数。Numpy在文档中没有提到欧几里德标准@用户2357112在注释下:
None Frobenius norm 2-norm
。如果你搜索
Frobenius norm
2 norm
,你会得到它。@PranayAryal:请参阅
Notes
下的表格,该表格说明为
ord=None
计算的向量norm是2-norm。给出L2范数并保持维度数不变,即减少的维度保持为单一维度(长度轴=1)。如果你的问题可以用a来回答,那么在这里提问之前,你没有尽到你所需的最小努力。在中没有提到L2范数。Numpy在文档中的任何地方都没有提到欧几里德范数。@user2357112notes:
None Frobenius norm 2-norm
。如果你搜索
Frobenius norm
2范数
,你会得到的。@pranayarial:见
Notes
下的表格,上面说为
ord=None
计算的向量范数是一个2范数。你在7分钟内问了这个问题并回答了这个问题。你应该在问这个问题之前仔细搜索你的问题!@RenS这个问题的提出和回答是为了帮助其他人e、 你在7分钟内问了又回答了这个问题。在这里提问之前,你应该仔细搜索你的问题!@RenS这个问题的提出和回答是为了帮助其他人。