簡體   English   中英

重塑成塊矩陣

[英]Reshape into block matrix

我有一個 (n,n,d,d) 形張量 A。

如何有效地將其重塑為 (n dim, n dim) 塊矩陣 B,使得 A[i,j,k,l] = B[i d+k, j d+l]? 換句話說,我想在 A 的最后兩個維度上逐塊平鋪矩陣 B。

您需要先轉置數組,使它們彼此相鄰。 然后,您可以重塑為所需的形狀以獲得您所要求的

例如:

import numpy as np
n1 = n2 = 100
d1 = d2 = 4
A = np.random.rand(n1,n2,d1,d2)
B = A.transpose(0,2,1,3) ## transpose so that that they are adjacent (exactly what you wrote)
# B now has a shape (n1,d1,n2,d2)
C = B.reshape(n1*d1, n2*d2) ## your required array

暫無
暫無

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

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