我现在已经搜索了几个小时,将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列表转换为我想要的输出列表,或者将列表中的每个项目连接/连接成一个?
提前感谢您的帮助。
答案 0 :(得分:0)
您应该忽略输出中的逗号。它们只是文本输出,但不是数据的一部分。相反,开始考虑你的数组形状。根据你之前的答案,你有一个数组列表,每个数组都有形状
[(19, 1, 2), (9, 1, 2), (1, 1, 2), (14, 1, 2), (12, 1, 2), (760, 1, 2), (632, 1, 2)]
要创建一个大型数组,您可以在其中保留维1
和2
,只需将数组沿其轴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)