我在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
复制相似问题