用零填充列表中的数组

时间:2017-03-07 08:59:42

标签: python numpy

我有这个清单:

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

我想迭代:

x = np.array([t[i] for i, t in enumerate(a)])

但由于np.array([0])只有一个元素,因此会抛出错误。

所以,我想用np.array([0])填充另一个零,然后

a = [ np.array([ 1,  2]), np.array([0,0])]
x = np.array([t[i] for i, t in enumerate(a)])
print(x)

[1 0]

所以,我找到了列表中最大的长度:

temp = []
for i in a:
    temp.append(len(i))

themax = max(temp)  

是2.(np.array([1, 2])

现在,我必须以某种方式用零填充其他子元素..

请注意,我将始终拥有导致问题的零np.array([0])

1 个答案:

答案 0 :(得分:1)

最简单的方法是在数组太小的情况下更改列表解析以给出零而不是数组元素:

x = np.asarray([(t[i] if i < t.shape[0] else 0.) for i, t in enumerate(a)])

这样更有效,因为您不必使用零扩展所有数组。