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

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

來自數組的 Numpy,為每個元素創建一個矩陣 N*M,所有值都設置為沒有 for 循環的元素

來自數組的 Numpy,為每個元素創建一個矩陣 N*M,所有值都設置為沒有 for 循環的元素

互換的青春 2023-05-16 14:37:14
我有一個像 np.array([1, 2, 3]) 這樣的 numpy 數組不使用 for 循環,只使用 numpy 或 pytorch 方法,我想要一個維度為 len(array) * N * M 的矩陣,由 N*M 矩陣組成,第一個矩陣由所有矩陣組成,第二個矩陣僅由兩個值組成,第三只有 3 個值。即時N = 4 M = 3 [[[1,1,1,1],[1,1,1,1],[1,1,1,1]],    [[2,2,2,2],[2,2,2,2],[2,2,2,2]],    [[3,3,3,3],[3,3,3,3],[3,3,3,3]]]我嘗試了不同的方法來實現這個矩陣,比如 unsqueeze 和 repeat 但我找不到解決方案,有什么建議嗎?
查看完整描述

2 回答

?
LEATH

TA貢獻1936條經驗 獲得超7個贊

干得好:

np.ones((len(a),M,N)) * a[:,None,None]

或者沒有乘法:

np.full((len(a),M,N), a[:,None,None])

輸出:

array([[[1., 1., 1., 1.],
        [1., 1., 1., 1.],
        [1., 1., 1., 1.]],

       [[2., 2., 2., 2.],
        [2., 2., 2., 2.],
        [2., 2., 2., 2.]],

       [[3., 3., 3., 3.],
        [3., 3., 3., 3.],
        [3., 3., 3., 3.]]])

請注意此處的形狀和預期輸出中給出的形狀是len(a) * M * N,而不是len(a) * N * M。M,N如果需要,可以交換np.ones


查看完整回答
反對 回復 2023-05-16
?
慕尼黑的夜晚無繁華

TA貢獻1864條經驗 獲得超6個贊

在 PyTorch 中你可以使用expand

a_t = torch.from_numpy(a)


a_t[:,None,None].expand(len(a_t), M, N)

tensor([[[1, 1, 1, 1],

? ? ? ? ?[1, 1, 1, 1],

? ? ? ? ?[1, 1, 1, 1]],


? ? ? ? [[2, 2, 2, 2],

? ? ? ? ?[2, 2, 2, 2],

? ? ? ? ?[2, 2, 2, 2]],


? ? ? ? [[3, 3, 3, 3],

? ? ? ? ?[3, 3, 3, 3],

? ? ? ? ?[3, 3, 3, 3]]], dtype=torch.int32)

另一種方法是使用repeat

a_t[:,None,None].repeat(1,?M,?N)

這類似于 numpy?tile-?np.tile(a[:,None,None], (1,M,N))


查看完整回答
反對 回復 2023-05-16
  • 2 回答
  • 0 關注
  • 188 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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