Python numpy中无环矩阵范数的计算

Python numpy中无环矩阵范数的计算,python,numpy,Python,Numpy,如何计算(100,8,8)矩阵中的矩阵范数,从而在末尾有100个范数列表向量?例如,我想要每个8x8矩阵的范数 现在我知道了,但它可能太低效和丑陋了 norms = [] for m in mats: norms.append(np.linalg.norm(m, ord='fro')) 接受一个axis参数,该参数可以是一个元组,其中包含两个保存矩阵的轴。所以你的计算很简单 norms = np.linalg.norm(m, ord='fro', axis=(1, 2)) 比如说,

如何计算(100,8,8)矩阵中的矩阵范数,从而在末尾有100个范数列表向量?例如,我想要每个8x8矩阵的范数

现在我知道了,但它可能太低效和丑陋了

norms = []
for m in mats:
    norms.append(np.linalg.norm(m, ord='fro'))
接受一个
axis
参数,该参数可以是一个元组,其中包含两个保存矩阵的轴。所以你的计算很简单

norms = np.linalg.norm(m, ord='fro', axis=(1, 2))
比如说,

In [43]: import numpy as np

In [44]: rng = np.random.default_rng()

In [45]: m = rng.uniform(0, 3, size=(10, 8, 8))

In [46]: norms = np.linalg.norm(m, ord='fro', axis=(1, 2))

In [47]: norms
Out[47]: 
array([15.43326187, 12.18174753, 12.72366662, 14.20558871, 14.08558457,
       13.51040102, 13.38476228, 14.3334069 , 15.19745515, 14.46134742])
接受一个
axis
参数,该参数可以是一个元组,其中包含两个保存矩阵的轴。所以你的计算很简单

norms = np.linalg.norm(m, ord='fro', axis=(1, 2))
比如说,

In [43]: import numpy as np

In [44]: rng = np.random.default_rng()

In [45]: m = rng.uniform(0, 3, size=(10, 8, 8))

In [46]: norms = np.linalg.norm(m, ord='fro', axis=(1, 2))

In [47]: norms
Out[47]: 
array([15.43326187, 12.18174753, 12.72366662, 14.20558871, 14.08558457,
       13.51040102, 13.38476228, 14.3334069 , 15.19745515, 14.46134742])
(这是专门针对Frobenius规范的)


(这是专门针对弗罗贝尼乌斯规范的)。

您可以通过列表理解来完成:

norms=[np.linalg.norm(m,ord='fro')表示垫子中的m]
或者使用
numpy.vectorize

@np.vectorize
定义我的乐趣(m):
返回np.linalg.norm(m,ord='fro')
标准=我的乐趣(垫子)

您可以通过列表理解来完成此操作:

norms=[np.linalg.norm(m,ord='fro')表示垫子中的m]
或者使用
numpy.vectorize

@np.vectorize
定义我的乐趣(m):
返回np.linalg.norm(m,ord='fro')
标准=我的乐趣(垫子)