亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將二維 numpy 數組的按行組合連接成二維數組

將二維 numpy 數組的按行組合連接成二維數組

Cats萌萌 2023-06-27 17:38:12
考慮兩個二維數組,A并且B。import numpy as npA = np.array([[1, 4],              [3, 5],              [1, 2]])B = np.array([[2, 3],              [1, 3]])我想構建一個數組arrOut,給出4 列數組中的行A和行的所有組合。B期望的輸出是:arrOut = [[1, 4, 2, 3],          [1, 4, 1, 3],          [3, 5, 2, 3],          [3, 5, 1, 3],          [1, 2, 2, 3],          [1, 2, 1, 3]] 我希望看到一種解決方案,可以輕松擴展到三個二維數組的行的所有組合以形成六列數組,或者四個二維數組的行的所有組合以形成八列數組。
查看完整描述

1 回答

?
Smart貓小萌

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 循環。


查看完整回答
反對 回復 2023-06-27
  • 1 回答
  • 0 關注
  • 185 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號