首页 > 解决方案 > 将 numpy 数组重塑为所需的形状

问题描述

我在 numpy 工作,并且有一个 numpy 形式的数组;

[[ 1,  2,  3],
 [ 4,  5,  6],
 [ 7,  8,  9],
 [10, 11, 12],
 [13, 14, 15],
 [16, 17, 18],
 [19, 20, 21],
 [22, 23, 24]]

我只想使用 reshape 和 transpose 函数并获得以下数组:

[[ 1,  2,  3,  7,  8,  9, 13, 14, 15, 19, 20, 21],
 [ 4,  5,  6, 10, 11, 12, 16, 17, 18, 22, 23, 24]]

这可以做到吗?我已经花了几个小时尝试并且开始认为它无法完成 - 我是否遗漏了一些明显的东西?

标签: pythonnumpymatrixreshapenumpy-ndarray

解决方案


你可以重塑成列,然后转置,然后用类似的东西重塑:

a = np.array([[ 1,2,3],
 [ 4,5,6],
 [ 7,8,9],
 [10, 11, 12],
 [13, 14, 15],
 [16, 17, 18],
 [19, 20, 21],
 [22, 23, 24]])

a.reshape(-1, 2, 3).transpose((1, 0, 2)).reshape(2, -1)

# array([[ 1,  2,  3,  7,  8,  9, 13, 14, 15, 19, 20, 21],
#        [ 4,  5,  6, 10, 11, 12, 16, 17, 18, 22, 23, 24]])

推荐阅读