我在Pyzo中使用Python 3。请告诉我为什么linalg.norm函数不能识别轴心参数。
此代码:
c = np.array([[ 1, 2, 3],[-1, 1, 4]])
d=linalg.norm(c, axis=1)
返回错误:
TypeError: norm()得到了一个意想不到的关键字参数'axis‘
发布于 2013-11-23 22:31:35
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
发布于 2013-11-23 22:31:27
在下面的numpy
版本中,1.8
linalg.norm
不使用axis
参数,您可以使用np.apply_along_axis
来获得您想要的结果,正如Weckesser在对这个问题的评论中指出的那样。
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])
https://stackoverflow.com/questions/20168596
复制相似问题