Python列表的nparray列表

时间:2017-04-10 07:43:30

标签: python list

我现在已经搜索了几个小时,将nparray列表转换为列表。 我使用的函数的输出是:

[array([[[ 65, 172]], [[ 64, 173]], ... , [[ 65, 173]]]),
array([[[ 70, 144]], [[ 70, 145]], ... , [[ 71, 144]]]), 
array([[[ 71, 132]] ,[[2, 1]]])]

当我选择列表[0]的第一项时,我得到:

[[[ 65 172]] [[64 173]] ... [[65 173]]]

所以我现在想要的是获得类似的东西,其中所有元素都在一个列表中,但没有用逗号或分号分隔:

[[[ 65 172]] [[64 173]] ... [[ 71 132]] [[2 1]]]

python中有什么东西可以将我的nparray列表转换为我想要的输出列表,或者将列表中的每个项目连接/连接成一个?

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您应该忽略输出中的逗号。它们只是文本输出,但不是数据的一部分。相反,开始考虑你的数组形状。根据你之前的答案,你有一个数组列表,每个数组都有形状

[(19, 1, 2), (9, 1, 2), (1, 1, 2), (14, 1, 2), (12, 1, 2), (760, 1, 2), (632, 1, 2)]

要创建一个大型数组,您可以在其中保留维12,只需将数组沿其轴0附加,就可以使用numpy.concatenate。预期的输出形状应为

(x, 1, 2)

其中x是所有第一个维度形状的总和:

import numpy

# Random data, shapes taken from your answer earlier
data = [numpy.random.rand(19, 1, 2), numpy.random.rand(9, 1, 2), numpy.random.rand(1, 1, 2), numpy.random.rand(14, 1, 2), numpy.random.rand(12, 1, 2), numpy.random.rand(760, 1, 2), numpy.random.rand(632, 1, 2)]

# Concatenate along axis 0. All other dimension must be equal in shape!
out = numpy.concatenate(data, axis=0)

print out.shape  # (1447, 1, 2)