Python linalg.norm不接受轴参数

Python linalg.norm不接受轴参数,python,numpy,norm,Python,Numpy,Norm,我在Pyzo中使用python3。请告诉我为什么linalg.norm函数不能识别轴参数 此代码: c = np.array([[ 1, 2, 3],[-1, 1, 4]]) d=linalg.norm(c, axis=1) 返回错误: TypeError:norm()获得意外的关键字参数“axis” 在下面的numpy版本1.8linalg.norm不使用axis参数,您可以使用np。如Warren Weckesser在对问题的评论中所指出的,沿轴应用[u以获得所需的结果 import nu

我在Pyzo中使用python3。请告诉我为什么linalg.norm函数不能识别轴参数

此代码:

c = np.array([[ 1, 2, 3],[-1, 1, 4]])
d=linalg.norm(c, axis=1)
返回错误:

TypeError:norm()获得意外的关键字参数“axis”


在下面的
numpy
版本
1.8
linalg.norm
不使用
axis
参数,您可以使用
np。如Warren Weckesser在对问题的评论中所指出的,沿轴应用[u
以获得所需的结果

import numpy as np
from numpy import linalg

c = np.array([[ 1, 2, 3],[-1, 1, 4]])

d = np.apply_along_axis(linalg.norm, 1, c)
结果:

>>> d
array([ 3.74165739,  4.24264069])

linalg.norm
不接受
axis
参数。您可以通过以下方式解决此问题:

np.apply_along_axis(np.linalg.norm, 1, c)
# array([ 3.74165739,  4.24264069])
或者,为了更快,您可以通过以下方式自己实施:

np.sqrt(np.einsum('ij,ij->i',c,c))
# array([ 3.74165739,  4.24264069])
关于时间:

timeit np.apply_along_axis(np.linalg.norm, 1, c)
10000 loops, best of 3: 170 µs per loop

timeit np.sqrt(np.einsum('ij,ij->i',c,c))
100000 loops, best of 3: 10.7 µs per loop

非常感谢。您的第一个建议对我来说很好。
axis
参数是在numpy的1.8版中添加的;看见你用的是什么版本?不知道downvoter,但这对我有用!小更正:在上面的示例代码中需要np.linalg。特别感谢您对它在v1.8以下无法工作的评论。@GnomeDePlume,谢谢。在我的代码中,我分别导入
linalg
,因此我的代码按原样工作。当然,只导入
numpy
可能更优雅。哎呀,我忽略了这一点!修订后的更正:)