Python在列表中连接数组

时间:2016-01-14 20:01:12

标签: python numpy

我有一个相同大小的数组列表。列表' z'成立:

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

4 个答案:

答案 0 :(得分:4)

不知道这样做吗?

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

答案 1 :(得分:2)

使用.extend建立新列表:

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

答案 2 :(得分: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]]

答案 3 :(得分: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]