我有一个48x365元素numpy数组,其中每个元素是一个包含3个整数的列表。我希望能够将其转换为一个1x17520数组,其中所有列表都是完整的元素。使用
np.reshape(-1)
似乎将元素分解成三个独立的整数,并形成一个1x52560数组。所以我要么需要一种新的方法来重新排列原数组要么需要一种新的方法来对新np中的元素进行分组。
谢谢你的帮助。
是否有不能明确执行的原因?如:
>>> 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
这样做,它只需要与另一个适当大小的参数配对。
>>> 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数组来处理是最简单的。