Python 创建numpy数组的范数

Python 创建numpy数组的范数,python,numpy,Python,Numpy,我有这个numpy阵列 X = [[ -9.03525007 7.45325017 33.34074879][ -6.63700008 5.13299996 31.66075039][ -5.12724996 8.25149989 30.92599964][ -5.12724996 8.25149989 30.92599964]] 我想用numpy得到这个数组的范数。我该怎么做 对于内部的每个数组,我需要sqrt(x2+y2+z2),所以我的输出将是4个值的数组(因为内

我有这个numpy阵列

X = [[ -9.03525007   7.45325017  33.34074879][ -6.63700008   5.13299996  31.66075039][ -5.12724996   8.25149989  30.92599964][ -5.12724996   8.25149989  30.92599964]]
我想用numpy得到这个数组的范数。我该怎么做


对于内部的每个数组,我需要sqrt(x2+y2+z2),所以我的输出将是4个值的数组(因为内部有4个数组)

你是说矩阵范数吗?如果是:

import numpy as np
>>> xs = [[ -9.03525007, 7.45325017, 33.34074879], [-6.63700008, 5.13299996, 31.66075039], [-5.12724996, 8.25149989, 30.92599964], [-5.12724996, 8.25149989, 30.92599964]]
>>> np.linalg.norm(xs)
66.506988943656381

请参阅:

为什么不使用
numpy.linalg.norm

import numpy

x = [[ -9.03525007, 7.45325017 , 33.34074879], [ -6.63700008  , 5.13299996  , 31.66075039], [ -5.12724996 , 8.25149989 , 30.92599964], [ -5.12724996   , 8.25149989  , 30.92599964]]

print numpy.linalg.norm(x)
输出:

66.5069889437
要获取所需内容(数组中每行的2-范数),可以使用
axis
参数
numpy.linalg.norm

import numpy
x = numpy.array([[ -9.03525007,   7.45325017,  33.34074879],
                 [ -6.63700008,   5.13299996,  31.66075039],
                 [ -5.12724996,   8.25149989,  30.92599964],
                 [ -5.12724996,   8.25149989,  30.92599964]])
print numpy.linalg.norm(x, axis=1)

=> 

array([ 35.33825423,  32.75363451,  32.41594355,  32.41594355])

其他人已经为您提供了
norm()
函数。您可能正在寻找数组中的
map()
函数
norm()

只要做:

from numpy.linalg import norm
norms = map(norm, x)

你能定义“norm”吗?这意味着对于内部的每个数组,我需要sqrt(x2+y2+z2),所以我的输出将是4个值的数组(因为内部有4个数组),谢谢。但是如果我需要范数(2),这意味着对于这个输入,我将得到一个有4个值的数组。[范数(x)、范数(y)、范数(z)]