[英]python numpy vector math
numpy
與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數組。 查看numpy for matlab用戶頁面,詳細了解數組wrt矩陣的優缺點。
正如我在評論中提到的那樣,必須使用dot()
函數或方法對向量進行多重復制是最大的陷阱。 但話又說回來,numpy數組是一致的 。 所有操作都是按元素進行的。 因此,對數組進行加法或減法以及與標量的乘法都可以按向量的預期進行工作。
Edit2:從ppe 465開始,從Python 3.5和numpy 1.10開始,您可以使用@
infix-operator進行矩陣乘法。
編輯:關於您的評論:
是。 整個numpy基於數組。
是。 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]
顯示了歸一化向量。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.