给出以下格式的数组列表:
[array([[63371.29484043],
[65000. ],
[51114.1118643 ],
[39000. ],
[61549.2893635 ],
[58204.43242583]]), array([[28750. ],
[19166.90102574],
[19667.19108884],
[17250. ]]), array([[32188.01786071],
[33625. ],
[23988.53674308],
[29354.92883394],
[31657.26571235],
[20175. ]])]`
我想将其打印为列表,例如不带方括号。
a = [18758.98675732, 23418.72996313 ... 20134.77503711]
我可以套用.tolist
,但不能去除内括号。
我该怎么做?
谢谢!
答案 0 :(得分:1)
在过多担心显示细节之前,请尝试了解对象的性质。显示从列表的结构开始。请特别注意len
(用于列表)和shape
(用于数组)。
In [119]: alist=[np.array([[63371.29484043],
...: [65000. ],
...: [51114.1118643 ],
...: [39000. ],
...: [61549.2893635 ],
...: [58204.43242583]]), np.array([[28750. ],
...: [19166.90102574],
...: [19667.19108884],
...: [17250. ]]), np.array([[32188.01786071],
...: [33625. ],
...: [23988.53674308],
...: [29354.92883394],
...: [31657.26571235],
...: [20175. ]])]
您有一个形状不同的数组列表:
In [120]: len(alist)
Out[120]: 3
In [121]: [x.shape for x in alist]
Out[121]: [(6, 1), (4, 1), (6, 1)]
您可以展平每个数组,生成形状为(6,),(4,)和(6,)的数组:
In [122]: [x.ravel() for x in alist]
Out[122]:
[array([63371.29484043, 65000. , 51114.1118643 , 39000. ,
61549.2893635 , 58204.43242583]),
array([28750. , 19166.90102574, 19667.19108884, 17250. ]),
array([32188.01786071, 33625. , 23988.53674308, 29354.92883394,
31657.26571235, 20175. ])]
hstack
可以将它们加入数组。如果您希望将列表作为最终结果,请使用.tolist()
:
In [123]: np.hstack(_)
Out[123]:
array([63371.29484043, 65000. , 51114.1118643 , 39000. ,
61549.2893635 , 58204.43242583, 28750. , 19166.90102574,
19667.19108884, 17250. , 32188.01786071, 33625. ,
23988.53674308, 29354.92883394, 31657.26571235, 20175. ])
由于数组在第一维上不同,因此我们也可以使用:
In [127]: np.vstack(alist).shape
Out[127]: (16, 1)
In [128]: np.vstack(alist).ravel()
答案 1 :(得分:0)
您可以使用map
获取每个子列表的第一个数字并展平该数组,然后使用list
将其变成一个列表:
list(map(lambda l : l[0], a))
输出:
[18758.98675732, 23418.72996313, 23625.0, 14175.0, 21015.48300191, 20134.77503711]
您还可以使用numpy的多维数组索引仅提取每个子列表的第一个数字:
list(a[:, 0])
答案 2 :(得分:0)
Numpy具有内置的展平功能:
https://docs.scipy.org/doc/numpy/reference/generated/numpy.ravel.html
list(a[0].ravel())