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

时间:2018-08-09 14:08:43

标签: python arrays list numpy

我正在尝试将列表转换为数组。 列表是:

list = [[59.99, 58.648, 58.608, 62.944, 51.648, 49.397, 44.766, 40.066, 35.641, 33.825, 31.112, 28.644, 26.441, 24.592, 26.767], ... , [253.99, 7.8, 58.28, 744.4, 59.08, 10.37, 2.9, 33.356, 64.2, 4.5, 3.18, 24,77, 7.18, 92,5, 95.87]]

我已经尝试过了:

A = numpy.array(list)

但是当我键入A时,我得到以下数组:

array([list([59.99, 58.648, 58.608, 62.944, 51.648, 49.397, 44.766, 40.066, 35.641, 33.825, 31.112, 28.644, 26.441, 24.592, 26.767]), ..., list([253.99, 7.8, 58.28, 744.4, 59.08, 10.37, 2.9, 33.356, 64.2, 4.5, 3.18, 24,77, 7.18, 92,5, 95.87])], dtype=object)

如何在阵列中乘坐list()

4 个答案:

答案 0 :(得分:1)

您的列表不包含等长列表,这就是numpy无法直接转换的原因。 例如,如果您尝试:

mylist = [[1,2,3], [2,3,4]]
l = np.asarray(mylist)

这将按预期工作,因为mylist中包含的列表长度相同。 不过,您可以尝试分两个步骤进行操作:

mylist = [[59.99, 58.648, 58.608, 62.944, 51.648, 49.397, 44.766, 40.066, 35.641, 33.825, 31.112, 28.644, 26.441, 24.592, 26.767],[253.99, 7.8, 58.28, 744.4, 59.08, 10.37, 2.9, 33.356, 64.2, 4.5, 3.18, 24,77, 7.18, 92,5, 95.87]]
list_of_arr = [np.array(x) for x in mylist]
arr = np.array(arr)

以便使用数组而不是列表来处理

答案 1 :(得分:1)

这应该有效

from itertools import chain

A = numpy.array(list(chain(*your_list)))

不要将变量list命名为保留关键字

答案 2 :(得分:1)

您的子列表的长度不匹配。因此,列表数组是不可避免的。按照您的建议,您可以将子列表的填充设为零。

这里是通过列表理解的一种解决方案:

    State   Code
7   Alabama   AL
8   Iowa      IA
9   Alaska    AK
10  Arizona   AZ

答案 3 :(得分:0)

首先,不要使用list作为变量名。 list是python保留的关键字。 使用我的列表或其他内容。

您可以做的一件事是创建一个空列表:compiledlist。

然后循环遍历mylist中的不同数组,并将其扩展到compiledlist。

compiledlist = []
for sublist in mylist:
    compiledlist.extend(sublist)

A = np.array(compiledlist)