2017-03-07 69 views
2

我有这样的名单:在零表填写阵列

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

+0

也许'np.empty()'是你在找什么? – Jan

+0

@Jan:不,我会在列表中有零,我必须保留它们。 – George

回答

1

最简单的方法是在一个数组过小的情况下,改变你的列表中理解到给出零而不是数组元素:

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

这是更有效,因为你没有用零扩展所有数组。