1 回答

TA貢獻1911條經驗 獲得超7個贊
使用 numpy 廣播并可擴展到任意數量的數組:
r1,c1 = A.shape
r2,c2 = B.shape
arrOut = np.zeros((r1,r2,c1+c2), dtype=A.dtype)
arrOut[:,:,:c1] = A[:,None,:]
arrOut[:,:,c1:] = B
arrOut.reshape(-1,c1+c2)
輸出:
[[1 4 2 3]
[1 4 1 3]
[3 5 2 3]
[3 5 1 3]
[1 2 2 3]
[1 2 1 3]]
對于 3 數組的情況(這里我使用了 (A,B,A)):
r1,c1 = A.shape
r2,c2 = B.shape
r3,c3 = A.shape
arrOut = np.zeros((r1,r2,r3,c1+c2+c3), dtype=A.dtype)
arrOut[:,:,:,:c1] = A[:,None,None,:]
arrOut[:,:,:,c1:c1+c2] = B[:,None,:]
arrOut[:,:,:,c1+c2:] = A
arrOut.reshape(-1,c1+c2+c3)
輸出:
[[1 4 2 3 1 4]
[1 4 2 3 3 5]
[1 4 2 3 1 2]
[1 4 1 3 1 4]
[1 4 1 3 3 5]
[1 4 1 3 1 2]
[3 5 2 3 1 4]
[3 5 2 3 3 5]
[3 5 2 3 1 2]
[3 5 1 3 1 4]
[3 5 1 3 3 5]
[3 5 1 3 1 2]
[1 2 2 3 1 4]
[1 2 2 3 3 5]
[1 2 2 3 1 2]
[1 2 1 3 1 4]
[1 2 1 3 3 5]
[1 2 1 3 1 2]]
您甚至可以為 N 數組情況創建一個 for 循環。
添加回答
舉報