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

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

基于其他陣列形狀的零焊盤陣列

基于其他陣列形狀的零焊盤陣列

狐的傳說 2021-11-02 17:02:00
我有 K 個特征向量,它們都共享維度 n 但具有可變維度 m (nxm)。他們都生活在一個列表中。to_be_padded = []to_be_padded.append(np.reshape(np.arange(9),(3,3)))array([[0, 1, 2],       [3, 4, 5],       [6, 7, 8]])to_be_padded.append(np.reshape(np.arange(18),(3,6)))array([[ 0,  1,  2,  3,  4,  5],       [ 6,  7,  8,  9, 10, 11],       [12, 13, 14, 15, 16, 17]])to_be_padded.append(np.reshape(np.arange(15),(3,5)))array([[ 0,  1,  2,  3,  4],       [ 5,  6,  7,  8,  9],       [10, 11, 12, 13, 14]])我正在尋找的是一種對這些 np.arrays 的行進行零填充的智能方法,以便它們共享相同的維度 m。我試過用 np.pad 解決它,但我還沒有想出一個漂亮的解決方案。任何在正確方向上的幫助或推動將不勝感激!結果應該使數組看起來像這樣:array([[0, 1, 2, 0, 0, 0],       [3, 4, 5, 0, 0, 0],       [6, 7, 8, 0, 0, 0]])array([[ 0,  1,  2,  3,  4,  5],       [ 6,  7,  8,  9, 10, 11],       [12, 13, 14, 15, 16, 17]])array([[ 0,  1,  2,  3,  4, 0],       [ 5,  6,  7,  8,  9, 0],       [10, 11, 12, 13, 14, 0]])
查看完整描述

2 回答

?
絕地無雙

TA貢獻1946條經驗 獲得超4個贊

您可以使用np.pad它,它還可以2-D使用指定填充寬度的值元組來填充數組,((top, bottom), (left, right)). 為此,您可以定義:


def pad_to_length(x, m):

    return np.pad(x,((0, 0), (0, m - x.shape[1])), mode = 'constant')

用法


您可以從查找ndarray列數最多的開始。假設你有兩個,a并且b:


a = np.array([[0, 1, 2],

       [3, 4, 5],

       [6, 7, 8]])


b = np.array([[ 0,  1,  2,  3,  4],

       [ 5,  6,  7,  8,  9],

       [10, 11, 12, 13, 14]])


m = max(i.shape[1] for i in [a,b])

# 5

然后使用此參數來填充ndarrays:


pad_to_length(a, m)

array([[0, 1, 2, 0, 0],

       [3, 4, 5, 0, 0],

       [6, 7, 8, 0, 0]])


查看完整回答
反對 回復 2021-11-02
?
莫回無

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

我相信對此沒有非常有效的解決方案。我認為您需要使用 for 循環遍歷列表并單獨處理每個數組:


for i in range(len(to_be_padded)):

    padded = np.zeros((n, maxM))

    padded[:,:to_be_padded[i].shape[1]] = to_be_padded[i]

    to_be_padded[i] = padded

列表中maxM最長m的矩陣在哪里。


查看完整回答
反對 回復 2021-11-02
  • 2 回答
  • 0 關注
  • 211 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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