我有一个像这样的3D矩阵
np.arange(16).reshape((4,2,2))
array([[[ 0, 1],
[ 2, 3]],
[[ 4, 5],
[ 6, 7]],
[[ 8, 9],
[10, 11]],
[[12, 13],
[14, 15]]])
并希望将它们以网格格式堆叠,最后得到
array([[ 0, 1, 4, 5],
[ 2, 3, 6, 7],
[ 8, 9, 12, 13],
[10, 11, 14, 15]])
有没有一种方法可以不显式地对它们进行hstack
(和/或vstack
),或者添加额外的维度和重塑?
2条答案
按热度按时间pftdvrlh1#
我已经发布了reshaping/unshaping arrays into blocks, here的更多通用函数。
7fhtutme2#
将3d数组转换为2d数组,
transpose()
是一个非常有用的函数。例如,为了在OP中导出预期结果,在通过添加额外维度进行整形之后,可以使用transpose()
交换第二轴和第三轴。从表面上看,它和
swapaxes()
的工作一样,但因为transpose()
允许任意轴的排列,所以它更灵活。例如,要进行以下转换,必须交换两个轴,因此swapaxes()
必须调用两次,但可以通过一次transpose()
调用来处理。