我有以下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库中是否可以做同样的事情?预先感谢。
答案 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
。