簡體   English   中英

Python中的多維矩陣乘法

[英]Multiple dimension matrix multiplication in Python

我有一個矩陣MM.shape = (4, 4)M[1,1].shape = (600,300) 每個M[i,j]通過傳遞meshgrid來計算。 例如

x=300
t=np.linspace(0, np.pi, num=x)
p=np.linspace(0,2*np.pi,num=2*x)
[T,P]=np.meshgrid(t,p)
M[1,1]=np.sin(T)*np.cos(P)

M的每個元素都是sincos的不同組合。

接下來我有x ,這樣x.shape = (4, 600, 300) x.shape (4, 600, 300) x的計算如下:

for j in xrange(n):
    x[0]+=np.sin(T)*np.sin(time[j])
    x[1]+=np.sin(T)*np.sin(time[j])
    x[2]+=np.sin(P)*np.cos(time[j])
    x[3]+=np.sin(P)*np.cos(time[j])

其中time[j]是一些數字。

我想知道如何計算transpose(x).MX,所以這應該是shape(600,300)的數量。 我已經計算出a = np.tensordot(M,x,axes=[1,0]) ,得出a.shape = (4,600,300)

首先,這是正確的嗎? 其次。 我如何進行轉置並計算transpose(x).Mx?

忘記如何計算Mx ,而專注於乘法:

我想知道如何計算transpose(x).MX,所以這應該是shape(600,300)的數量。 我已經計算出a = np.tensordot(Mat,x,axes = [1,0]),得出a.shape =(4,600,300)。

M的總形狀是什么? wwii猜測最有意義(4,4,600,300)

您說x(4, 600,300) 什么是transpose(x) 移調是為2軸定義的,但與3軸不明確。

什么是X

什么是Mat 在您的np.tensordot(Mat,x,[1,0])唯一起作用的是(4,4)

但是讓我作個有根據的猜測,您想要XT * M * X ,但是要加上(600,300)維。

 np.einsum('inm,ijnm,jnm->nm', X, M, X)

也就是說,您希望X的點生成具有M的第一個暗度,而X另一個點積具有M的第二個暗度,而不改變最后2個維度。

暫無
暫無

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

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