2017-03-07 68 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)]) 

這是更有效,因爲你沒有用零擴展所有數組。