创建一个名为b的函数,计算b在向量a上的投影。该函数应适用于任何维数的向量。
条件:
-向量b只能包含一个,并且维度应与a相同。
我的以下代码似乎无效。有任何更改建议吗?
import numpy as np
a = np.array([3,-1])
def computeProjection(a):
b = np.ones(np.size(a))
projection = ((np.dot(a,b))*a) / (np.linalg.norm(a))**2
assert np.size(a) == np.size(b)
return projection()
computeProjection(a)
答案 0 :(得分:0)
将return projection()
更改为return projection
。
projection
是参数,不是函数。
答案 1 :(得分:0)
问题:
numpy.ndarray
不可呼叫 projection
是numpy.ndarray
;直接将其退回。
assert
。检查假设是件好事,但是您已经明确告知数组大小相同(尽管您要表示形状)-无需检查。
>>> import numpy as np
>>> def computeProjection(a):
... b = np.ones(shape=a.shape)
... projection = ((np.dot(a,b))*a) / (np.linalg.norm(a))**2
... return projection
...
>>> a = np.array([3,-1])
>>> computeProjection(a)
array([ 0.6, -0.2])