向量之间的角度 - 只有长度为1的数组可以转换为Python标量

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了向量之间的角度 - 只有长度为1的数组可以转换为Python标量相关的知识,希望对你有一定的参考价值。

我有两个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数组(或标量)。

以上是关于向量之间的角度 - 只有长度为1的数组可以转换为Python标量的主要内容,如果未能解决你的问题,请参考以下文章

维度不匹配:数组 'cov' 的形状为 (1, 1),但 'mean' 是长度为 2 的向量

「考试」小P的生成树

SVM:

如何将向量转换为犰狳矩阵?

从方向向量中获取角度?

将 NumPy 向量转换为二维数组/矩阵