我正在尝试将列表转换为数组。 列表是:
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()
?
答案 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)