簡體   English   中英

如何一次將多個向量乘以一個矩陣(在 numpy 中)?

[英]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.

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