[英]How to multiply several vectors by one matrix at once (in numpy)?
我有一個 2x2 旋轉矩陣和幾個存儲在 Nx2 數組中的向量。 有沒有辦法一次旋轉它們(即將它們全部乘以旋轉矩陣)?
我確定有一個 numpy 方法,只是不明顯。
import numpy as np
vectors = np.array( ( (1,1), (1,2), (2,2), (4,2) ) ) # 4 2D vectors
ang = np.radians(30)
m = np.array( ( (np.cos(ang), -np.sin(ang)),
(np.sin(ang), np.cos(ang)) )) # 2x2 rotation matrix
# rotate 1 vector:
m.dot(vectors[0,:])
# rotate all vectors at once??
因為m
的形狀為(2,2)
而vectors
的形狀為(4,2)
,你可以簡單地做
dots = vectors @ m.T
然后每一行i
包含矩陣向量乘積m @ vectors[i, :]
。
另一種選擇是使用功能強大的einsum
function並執行以下操作:
dots = np.einsum("ij,kj->ik", vectors, m)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.