用python函数求解矢量投影

时间:2019-06-08 11:43:39

标签: python

创建一个名为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)

2 个答案:

答案 0 :(得分:0)

return projection()更改为return projection
projection是参数,不是函数。

答案 1 :(得分:0)

问题:

numpy.ndarray不可呼叫

projectionnumpy.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])