你有什么理由不能明确地做到这一点?如:
>>> a = numpy.arange(17520 * 3).reshape(48, 365, 3)
>>> a.reshape((17520,3))
array([[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8],
...,
[52551, 52552, 52553],
[52554, 52555, 52556],
[52557, 52558, 52559]])
您也可以使用-1 来实现,它只需与另一个适当大小的 arg 配对即可。
>>> a.reshape((17520,-1))
array([[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8],
...,
[52551, 52552, 52553],
[52554, 52555, 52556],
[52557, 52558, 52559]])
或
>>> a.reshape((-1,3))
array([[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8],
...,
[52551, 52552, 52553],
[52554, 52555, 52556],
[52557, 52558, 52559]])
后来我想到你也可以创建一个记录数组——这在某些情况下可能是合适的:
a = numpy.recarray((17520,), dtype=[('x', int), ('y', int), ('z', int)])
这可以按照您尝试的原始方式重新调整,即reshape(-1)。尽管如此,正如 larsmans 的评论所说,将您的数据视为 3d 数组是最简单的。