转换数据的嵌套列表成多维numpy的阵列(Converting nested lists of da

2019-08-03 15:29发布

在下面的代码我建立嵌套表数据了。 之后的for循环是什么,我想是因为它巧妙地铸造成一个多维数组numpy的尽可能。 然而,当我这样做就可以了阵列转换,似乎只有到外部列表转换为数组。 甚至当我继续向下我风与数据点的形状恶化(100L,) ......这样的列表的数组,其中每个列表是我的数据(很明显,我想要一个(100,3) 我试图嘴硬numpy.asanyarray()还,但我似乎无法工作了。 我真的想从我的3D名单从一开始就以3D阵列如果这是可能的。 如果没有,我怎么能得到名单的阵列成一个二维数组,而不必重复,并将其转换呢?

编辑:我也是开放从一开始就构建的数据,如果它使处理更容易的更好的方法。 但是,它是未来通过串行端口和大小事先不知道。

import numpy as np
import time

data = []
for _i in range(100):   #build some list of lists
    d = [np.random.rand(), np.random.rand(), np.random.rand()]
    data.append([d,time.clock()])

dataArray = np.array(data)  #now I have an array of lists of a list(of data) and a time
dataPoints = dataArray[:,0] #this is the data in an array of lists

Answer 1:

数据点是不是2D名单。 首先将其转换成2D列表,然后它会工作:

d=np.array(dataPoints.tolist())

现在,d是(100,3)为你想要的。



Answer 2:

如果一个二维数组是你想要什么:

from itertools import chain
dataArray = np.array(list(chain(*data)),shape=(100,3))

我没有工作的代码,所以你可能需要更改列/行排序得到的形状相匹配。



文章来源: Converting nested lists of data into multidimensional Numpy arrays