簡體   English   中英

python numpy矢量數學

[英]python numpy vector math

numpyeuclid的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數組。 查看numpy for matlab用戶頁面,詳細了解數組wrt矩陣的優缺點。

正如我在評論中提到的那樣,必須使用dot()函數或方法對向量進行多重復制是最大的陷阱。 但話又說回來,numpy數組是一致的 所有操作都是按元素進行的。 因此,對數組進行加法或減法以及與標量的乘法都可以按向量的預期進行工作。

Edit2:ppe 465開始,從Python 3.5和numpy 1.10開始,您可以使用@ infix-operator進行矩陣乘法。

編輯:關於您的評論:

  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]是計算長度的另一種方法。 In [6]顯示了歸一化向量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM