如何像这样用 numpy 重塑数组:

How to reshape an array with numpy like this:

我有这个:

array([[0, 0, 1, 1, 2, 2, 3, 3],
       [0, 0, 1, 1, 2, 2, 3, 3]])

我想像这样重塑我的数组:

array([[0, 0, 1, 1],
       [0, 0, 1, 1],
       [2, 2, 3, 3],
       [2, 2, 3, 3]])

如何使用 python numpy?

您可以拆分和连接:

a = np.array([[0, 0, 1, 1, 2, 2, 3, 3],
              [0, 0, 1, 1, 2, 2, 3, 3]])

cols = a.shape[1] // 2
np.concatenate((a[:,:cols], a[:,cols:]))

#[[0 0 1 1]
# [0 0 1 1]
# [2 2 3 3]
# [2 2 3 3]]

您可以在重塑后简单地交换行。

a= np.array([[0, 0, 1, 1, 2, 2, 3, 3],
       [0, 0, 1, 1, 2, 2, 3, 3]]).reshape(4,4)

a[[1,2]] = a[[2,1]]

输出:

array([[0, 0, 1, 1],
       [0, 0, 1, 1],
       [2, 2, 3, 3],
       [2, 2, 3, 3]])