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]])

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的矩陣在哪里。
添加回答
舉報