是什么numpy
相当于euclid https://pypi.python.org/pypi/euclid的 2d 向量类/操作? ( 喜欢:euclid.Vector2
)
到目前为止我有这个。创建两个向量
import numpy as np
loc = np.array([100., 100.])
vel = np.array([30., 10])
loc += vel
# reseting speed to a default value, maintaining direction
vel.normalize()
vel *= 200
loc += vel
您可以只使用 numpy 数组。看着那(这面向 matlab 用户的 numpy https://docs.scipy.org/doc/numpy/user/numpy-for-matlab-users.html页面详细概述了数组的优缺点。矩阵。
正如我在评论中提到的,必须使用dot()
向量乘法的函数或方法是最大的陷阱。但话又说回来,numpy 数组是持续的。所有操作都是按元素进行的。因此,数组的加法或减法以及与标量的乘法都按照向量的预期工作。
Edit2:从 Python 3.5 和 numpy 1.10 开始,您可以使用@
用于矩阵乘法的中缀运算符,感谢pep 465 https://www.python.org/dev/peps/pep-0465/.
Edit:关于您的评论:
是的。 numpy整个都是基于数组的。
Yes. linalg.norm(v)
是获取向量长度的好方法。但你得到的结果取决于可能的第二个规范参数!阅读文档。
-
要标准化向量,只需将其除以 (2) 中计算的长度即可。数组除以标量也是逐元素的。
ipython 中的一个例子:
In [1]: import math
In [2]: import numpy as np
In [3]: a = np.array([4,2,7])
In [4]: np.linalg.norm(a)
Out[4]: 8.3066238629180749
In [5]: math.sqrt(sum([n**2 for n in a]))
Out[5]: 8.306623862918075
In [6]: b = a/np.linalg.norm(a)
In [7]: np.linalg.norm(b)
Out[7]: 1.0
注意In [5]
是计算长度的另一种方法。In [6]
显示向量的归一化。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)