python numpy矢量数学

2024-05-19 00:00:03 发布

您现在位置:Python中文网/ 问答频道 /正文

什么是numpy等价于^{}的二维向量类/操作?(例如: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

Tags: toimportnumpydefaultasnparray向量
1条回答
网友
1楼 · 发布于 2024-05-19 00:00:03

你可以使用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)是获取向量长度的一个好方法。但你能得到什么取决于对norm可能的第二个论点!阅读文档。

  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]是计算长度的另一种方法。In [6]显示正在规范化向量。

相关问题 更多 >

    热门问题