如何反规范化利纳格规范numpy的方法?

2024-10-03 21:27:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个阵列

a = array([[ 3.55679502,  3.46622505],
           [ 1.03670334,  2.43254031],
           [ 1.12185975,  3.25257322]])

现在我用numpyslinalg.norm方法对其进行规范化

^{pr2}$

它给出了(0,1)范围内的标准化值,如下所示:

norm_a = array([[ 0.53930891,  0.52557599],
                [ 0.15719302,  0.36884067],
                [ 0.1701051 ,  0.49318044]])

现在,使用norm_a,如何恢复原始的非规范化矩阵a?在


Tags: 方法norm矩阵规范化arraypr2numpyslinalg
2条回答

做相反的简单数学:

In [310]:    
norm_a * np.linalg.norm(a)

Out[310]:
array([[ 3.55679502,  3.46622505],
       [ 1.03670334,  2.43254031],
       [ 1.12185975,  3.25257322]])

基本上是按标量缩小整个数组。比例因子必须用于检索。该比例因子将是np.linalg.norm(a),可以在计算规范化值时存储,然后用于检索a,如^{}所示。另一种方法是从原始数组a中存储一个元素,比如第一个元素,然后使用它对规范化数组中的相应元素进行除法,得到比例因子。在

因此,另一种方法是-

a = norm_a*(a[0,0]/norm_a[0,0])

同样,如果所选元素与规范化数组中对应的元素相比太小或太大,那么我们可能会有细微差别。所以,我猜在这里使用np.linalg.norm(a)是最安全的方法。在

相关问题 更多 >