[英]Multiple dimension matrix multiplication in Python
我有一個矩陣M
, M.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的每個元素都是sin
和cos
的不同組合。
接下來我有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?
忘記如何計算M
和x
,而專注於乘法:
我想知道如何計算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.