繁体   English   中英

在 python 中重塑 numpy 阵列

[英]Reshaping a numpy array in python

我有一个 48x365 元素 numpy 数组,其中每个元素都是一个包含 3 个整数的列表。 我希望能够将它变成一个 1x17520 数组,其中所有列表都作为元素保持不变。 使用

np.reshape(-1)

似乎将元素分解为三个单独的整数并创建一个 1x52560 数组。 所以我要么需要一种重新排列原始数组的新方法,要么需要一种将新 np.reshape 数组(仍然按顺序排列)中的元素分组回 3 个列表的方法。

谢谢你的帮助。

有没有理由你不能明确地做到这一点? 如:

>>> 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 阵列是最简单的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM