gpt4 book ai didi

python - 矢量模块中的点积

转载 作者:太空宇宙 更新时间:2023-11-03 21:01:00 25 4
gpt4 key购买 nike

我正在尝试使用 Python Vectors 模块。

v1 =  Vector(1,0,0)
v2 = Vector(1,1,0)

这些向量之间的角度是 45 度。我可以使用以下指令获得正确的值。

>>> v1.angle(v2)
45.00000000000001

但是,v2.angle(v1) 出现错误。

经过调查,发现 v1.dot(v2) 和 v2.dot(v1) 给出不同的结果,这就是此错误背后的原因。:

>>> v1.dot(v2)
1
>>> v2.dot(v1)
2

与上面不同,我的理解是点积是可交换的。

对此的任何帮助都会很棒。

最佳答案

正如 pypi.org/project/vectors 所评论的那样,它是非常过时的模块。它不是标准或推荐的模块。请改用 numpy 或 scipy。

import numpy as np
v1 = np.array([1,0,0])
v2 = np.array([1,1,0])

您可以通过以下任一方法求点积:

print(v2.dot(v1))              # Output = 1
print(v2.dot(v1)) # Output = 1
print(np.dot(v1,v2)) # Output = 1

求角度:

cos = np.dot(v1,v2)/(norm(v1)*norm(v2))
angle = np.arccos(np.clip(cos, -1, 1))

如果您喜欢象征性地工作,您也可以查看 sympy。 https://docs.sympy.org/latest/modules/geometry/lines.html#sympy.geometry.line.LinearEntity.angle_between

关于python - 矢量模块中的点积,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55704580/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com