gpt4 book ai didi

python numpy 矢量数学

转载 作者:太空狗 更新时间:2023-10-29 17:24:18 24 4
gpt4 key购买 nike

什么是 numpy 相当于 euclid的二维向量类/操作? (例如: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 数组。看numpy for matlab users有关数组 w.r.t. 优缺点的详细概述的页面。矩阵。

正如我在评论中提到的,必须使用 dot() 函数或方法来乘法向量是最大的陷阱。但话说回来,numpy 数组是一致的。所有操作都是按元素进行的。因此,数组的加法或减法以及与标量的乘法都按照向量的预期方式工作。

Edit2:从 Python 3.5 和 numpy 1.10 开始,您可以使用 @ 中缀运算符进行矩阵乘法,感谢 pep 465 .

编辑:关于您的评论:

  1. 是的。整个 numpy 都是基于数组的。

  2. 是的。 linalg.norm(v) 是获取向量长度的好方法。但是你得到什么取决于规范的第二个参数!阅读文档。

  3. 要对向量进行归一化,只需将其除以您在 (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] 是另一种计算长度的方法。 在 [6] 中 显示了向量的归一化。

关于python numpy 矢量数学,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12049154/

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