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

12
在进行了一些复杂的操作后,得到了一个结果列表,称为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] ]

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


可能是重复的问题,参考链接:https://dev59.com/zWkw5IYBdhLWcg3wrsjn - Om Prakash
6个回答

13
你可以在列表解析式中使用 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]]

7

只需对每个成员数组调用ndarray.tolist()

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

这比在外部级别上构建NumPy数组,然后调用.tolist()更快。


3

那么我们来看一个简单的列表推导式:

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

2
new_list = list(map(list,old_list))

您可以像上面那样使用map函数。您可以在下面看到结果:
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]]

1
使用tolist():

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

0
如果您有超过1D列表,例如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]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接