Python 创建numpy数组的范数
我有这个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个值的数组(因为内
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)]