将数组列表转换为列表列表?

时间:2017-07-30 20:24:47

标签: python arrays list numpy

在一些复杂的操作之后,获得了一个结果列表,比如list1,它是一个不同数组的列表。

以下是 list1

In [] : list1
Out [] : 
       [array([ 10.1]),
        array([ 13.26]),
        array([ 11.0 ,  12.5])]

想要将此列表转换为简单的列表列表而不是数组

预计 list2

      [ [ 10.1],
        [ 13.26],
        [ 11.0 ,  12.5] ]

如果有任何不清楚的地方,请告诉我。

6 个答案:

答案 0 :(得分:6)

您可以在列表理解中使用 tolist()

>>> [l.tolist() for l in list1]
[[0.0], [0.0], [0.0, 0.5], [0.5], [0.5], [0.5, 0.69], [0.69, 0.88], [0.88], [0.88], [0.88], [0.88, 1.0], [1.0, 1.1], [1.1], [1.1], [1.1], [1.1, 1.5], [1.5, 2.0], [2.0], [2.0]]

答案 1 :(得分:6)

只需在每个成员数组上调用ndarray.tolist()即可。

l = [arr.tolist() for arr in l]

这比在外层建立NumPy数组然后调用.tolist()要快。

答案 2 :(得分:3)

简单的列表理解

list1 = [list(x) for x in list1]

答案 3 :(得分:1)

使用tolist()

import numpy as np
>>> np.array([[1,2,3],[4,5,6]]).tolist()
[[1, 2, 3], [4, 5, 6]]

答案 4 :(得分:1)

new_list = list(map(list,old_list))

您可以使用上面的地图功能。您可以看到以下结果:

In[12]: new_list = list(map(list,old_list))

In[13]: new_list

Out[13]: 
[[0.0],
 [0.0],
 [0.0, 0.5],
 [0.5],
 [0.5],
 [0.5, 0.68999999999999995],
 [0.68999999999999995, 0.88],
 [0.88],
 [0.88],
 [0.88],
 [0.88, 1.0],
 [1.0, 1.1000000000000001],
 [1.1000000000000001],
 [1.1000000000000001],
 [1.1000000000000001],
 [1.1000000000000001, 1.5],
 [1.5, 2.0],
 [2.0],
 [2.0]]

答案 5 :(得分:0)

如果您有一个以上的一维列表,例如2D或更多,您可以使用它在一个列表中进行所有输入,我在网上找到了它,但不记得我是从谁那里获得xD的

dummy = myList.tolist()
flatten = lambda lst: [lst] if type(lst) is int else reduce(add, [flatten(ele) for ele in lst])
points = flatten(dummy)

您将获得所有点或所有条目的列表。

我已经在此列表上进行过测试

[[[3599, 532]], [[5005, 493]], [[4359, 2137]]]

这是输出

[3599, 532, 5005, 493, 4359, 2137]