我有两个2D矢量v0L和v1L。
def magnitude(v1):
return(np.sqrt(v1[0]**2 +v1[1]**2))
def angle(v1, v2):
return acos(np.dot(v1, v2) / (magnitude(v1) * magnitude(v2)))
angle(v0L,v1L)
为什么这给了我一个“只有长度为1的数组可以转换为Python标量”的错误?
非常感谢你提前!
将acos
改为np.arccos
。如果acos
引用math.acos
,你可以得到那个错误:
In [9]: math.acos(np.ones(2))
TypeError: only length-1 arrays can be converted to Python scalars
In [11]: np.arccos(np.ones(2))
Out[11]: array([ 0., 0.])
math.acos
期望标量(或长度为1的数组)作为输入。 np.arccos
可以接受NumPy数组(或标量)。