2016-01-14 47 views
2

我有一個相同大小的數組列表。列表「Z」認爲:Python連接列表中的數組

>>> z[0] 
Out[24]: array([ -27.56272878, 952.8099842 , -3378.58996244, 4303.9692863 ]) 
>>> z[1] 
Out[25]: array([ -28, 952 , -36244, 2863 ]) 
>>> z[0].shape 
Out[26]: (4,) 

我想連接列表中的陣列來獲得新的陣列,它看起來像:

-27.56272878 952.8099842 -3378.58996244 4303.9692863 
-28   952   -36244   2863 

即對於上面的例子中,我希望獲得大小的陣列(2,4)

原始列表「Z」中有大約100陣列,但都是相同尺寸的(4)

編輯:我試圖從該線程但不工作的建議: Python concatenating different size arrays stored in a list

+0

由於'numpy'級聯問題,您需要注意陣列的形狀和尺寸。看看像'vstack'和'hstack'這樣的函數的代碼來理解他們如何使用'concatenate'。 – hpaulj

回答

3

這會不會做呢?

znew = np.vstack((z[0],z[1])) 
1

使用.extend建立新的列表:

concatenated = [] 
for l in z: 
    concatenated.extend(l) 
1

如果您有:

z= [np.array([ -27.56272878, 952.8099842 , -3378.58996244, 4303.9692863 ]), 
    np.array([ -28, 952 , -36244, 2863 ])] 

你可以試着將它們串聯,然後重新塑造使用像你說的,他們的陣列連接在一起(len(z))(len(z[0])數量和每個數組的長度的新數組全部具有相同的長度):

In [10]: new = np.concatenate([i for i in z]).reshape((len(z), len(z[0]))) 

In [11]: new.shape 
Out[11]: (2, 4) 

In [12]: print(new) 
[[ -2.75627288e+01 9.52809984e+02 -3.37858996e+03 4.30396929e+03] 
[ -2.80000000e+01 9.52000000e+02 -3.62440000e+04 2.86300000e+03]] 
0

只要使用extend()就可以了。基本上用新值擴展初始數組。

arr1 = [ -27.56272878, 952.8099842 , -3378.58996244, 4303.9692863 ] 
arr2 = [ -28, 952 , -36244, 2863 ] 
arr1.extend(arr2) 
print arr1 
>> [-27.56272878, 952.8099842, -3378.58996244, 4303.9692863, -28, 952, -36244, 2863]