数组用零填充

时间:2019-08-01 10:06:58

标签: python numpy

我有以下3种不同长度的列表。

a = [1, 2]
b = [1, 2, 3, 4, 5]
c = [1, 2, 3, 4]

我想将这三个列表组合成一个二维数组,其长度不足以填充0。请尝试下面的代码

import numpy as np
a = [1, 2]
b = [1, 2, 3, 4, 5]
c = [1, 2, 3, 4]

d = []
d.append(a)
d.append(b)
d.append(c)
max_len = 0
for i in d:
    if len(i) > max_len:
        max_len = len(i)
f = []
for i in d:
    for j in range(len(i), max_len):
        i.append(0)
    f.append(i)
f = np.array(f)
print(f)

预期输出如下。

[[1 2 0 0 0]
 [1 2 3 4 5]
 [1 2 3 4 0]]

在numpy库中是否可以做同样的事情?预先感谢。

1 个答案:

答案 0 :(得分:0)

一个快速的解决方案可能是

input_arrays = (a,b,c)
output = np.zeros((3,  max(len(arr) for arr in input_arrays)))
for n, arr in enumerate(input_arrays):
    output[n][:len(arr)] = arr

...给予

Out[23]: 
array([[1., 2., 0., 0., 0.],
       [1., 2., 3., 4., 5.],
       [1., 2., 3., 4., 0.]])

如果您需要整数,请添加例如, dtype='int32'np.zeros