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

Python 如何将数组列表拆分为单个数组?,python,arrays,numpy,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.21

我得到了一个数组列表,里面有两个不同维度的数组

 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]
a=c[c[:,0]<1.5]
b=c[c[:,1]>5]

它可以工作,但有时第二个数组中的值与第一个数组中的值具有相同的值…

根据我的理解,您希望将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 )

也许你想要的是这样的:

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的所有列表,那么-
a,b=[i代表i,c]
呢?或者
a,b=[[i]表示c中的i]
?您似乎同时需要两件不同的事情:拆分元组并过滤数组值。你能说得更具体一点吗?@Divakar我试过你的方法,但它给我带来了一个错误:“在0-d数组上迭代”。我猜是因为我使用np.asarray来构建数组。@ma3oun我只想拆分这两个数组,仅此而已。首先,您提供给我们的示例是数组列表,而不是数组。所以,也许可以为您的数据制作一个更具代表性的版本。谢谢您,它对小数据非常有用。但是我得到了一个错误:“太多的值需要解包(预期为2)”。现在我得到了一个包含[[array([3.00514850e+05,3.3240000E+01,2.71669002e-01,6.50974961e+05,3.0051512E+05,3.3224895E+01])数组([15.])的大数组。对不起,我的错误。我的输入是一个数组列表,而不是我想象中的大数组。