2017-02-27 54 views
1

在前面的问题我问了一下连击3个阵列,蟒蛇的Python:串联×3矩阵的列表

Python: Concatenate 3 arrays

我没能得到它下面的例子

假设我有3个阵列

a1=[ 
array([628.95, 632.012, 632.67, 270.70, 275.23, 275.20]) 
array([13.87, -24.55, 13.012, 17.61, -7.07, 2.29]) 
array([-4.56089042, -4.76182533, -5.84063203, -1.4404148, 23.11891765, 15.67678579]) 
] 

a2=[ 
array([2353.12, 2357.60, 2360.42, 1718.49, 1703.65322389, 1718.781]) 
array([-31.07, 50.49, -32.94, 32.27, 20.404, 5.79]) 
array([-5.75, -4.70, -3.86, 30.25, 66.60, 64.626]) 
] 


a3=[ 
array([2716.476, 2724.714, 2731.84, 1944.73, 1920.258, 1926.840]) 
array([-14.30, 20.78, -17.90, 44.94, -15.26, 19.888]) 
array([-13.959, -12.62, -10.84, 4.227, 45.744, 42.448]) 
] 

我想要得到以下的输出:

r = a1[0] + a2[0] + a3[0] + a1[1] + a2[1] + a3[1] +a1[2] + a2[2] + a3[2] 

r = [628.95, 632.012, 632.67, 270.70, 275.23, 275.20, 2353.12, 2357.60, 2360.42, 1718.49, 1703.65322389, 1718.781, 2716.476, 2724.714, 2731.84, 1944.73, 1920.258, 1926.840,13.87, -24.55, 13.012, 17.61, -7.07, 2.29, -31.07, 50.49, -32.94, 32.27, 20.404, 5.79 .... ]  

谁使用numpy的

+0

看看如何扁平化列表 –

+0

@WarrenWeckesser肯定!我编辑,谢谢:) –

回答

1

为此在一个通用的方法可以使用zipnumpy.concatenate

import numpy as np 
a = np.concatenate([np.concatenate(x) for x in zip(a1, a2, a3)]) 
a 

#array([ 628.95  , 632.012  , 632.67  , 270.7  , 
#   275.23  , 275.2  , 2353.12  , 2357.6  , 
#  2360.42  , 1718.49  , 1703.65322389, 1718.781  , 
#  2716.476  , 2724.714  , 2731.84  , 1944.73  , 
#  1920.258  , 1926.84  , 13.87  , -24.55  , 
#   13.012  , 17.61  , -7.07  ,  2.29  , 
#   -31.07  , 50.49  , -32.94  , 32.27  , 
#   20.404  ,  5.79  , -14.3  , 20.78  , 
#   -17.9  , 44.94  , -15.26  , 19.888  , 
#   -4.56089042, -4.76182533, -5.84063203, -1.4404148 , 
#   23.11891765, 15.67678579, -5.75  , -4.7  , 
#   -3.86  , 30.25  , 66.6  , 64.626  , 
#   -13.959  , -12.62  , -10.84  ,  4.227  , 
#   45.744  , 42.448  ]) 
+0

如果连接数组的数量是不确定的? –

+0

像数组列表一样吗?如果'lst = [a1,a2,a3,...]',那么你可以在'zip(* lst)'中使用'...。 – Psidom

+1

谢谢!工作正常 :) –