如何将数组列表拆分为单个数组?

时间:2017-04-21 08:11:12

标签: python arrays numpy

我有一个包含两个不同维度数组的数组列表。

 c = [array([  3.00493560e+05,   3.04300000e+01,   3.21649837e-01,
         6.50984546e+05,   3.00493379e+05,   3.03073203e+01]), array([ 14.])]

我想根据这些尺寸拆分它们,以便有两个独立的数组。

   a =  array[([  3.00493560e+05,   3.04300000e+01,   3.21649837e-01,
                 6.50984546e+05,   3.00493379e+05,   3.03073203e+01]]

   b = array[([ 14.])]

我尝试使用np.split(c,6) - 但它基于数组拆分并给定长度并创建一个大数组,因此它不是我所期待的。

我也尝试使用

a = c[c[:, 0] < 1.5]
b = c[c[:, 1] > 5]

它有效但有时我的第二个数组的值与第一个数组的值具有相同的值...

2 个答案:

答案 0 :(得分:1)

根据我的理解,您希望将numpy数组列表拆分为单独的python列表。您可以执行以下操作:

a,b = [ [individualArray] for individualArray in c]

这将为您提供所需的输出:

a= [array([  3.00493560e+05,   3.04300000e+01,   3.21649837e-01,
             6.50984546e+05,   3.00493379e+05,   3.03073203e+01]
b= [array([ 14.])]

修改

如果c包含2个以上的数组,您可以通过生成拆分数组列表来概括这种方法:

splitArraysList = [ [individualArray] for individualArray in c ]

如果数组非常大,您可以使用生成器而不是列表来迭代拆分列表中的各个数组:

splitArraysList = ( [individualArray] for individualArray in c )

答案 1 :(得分:0)

也许你想要的是这样的:

a = sum([i for i in c if len(i) == 6], [])
b = sum([i for i in c if len(i) == 1], [])

如果您希望a成为长度为6的所有列表,并且b为长度为1的所有列表