如何在保留 (x, y) 的值的同时将形状数组 (2, *(x, y)) 重塑为 (1, *(x,y), 2)?

How to reshape array of shape (2, *(x, y)) to (1, *(x,y), 2) while preserving the values of (x, y)?

我想将形状数组 (2, *(x, y)) 重塑为 (1, *(x,y), 2),同时保留 (x, y)?

的值

(2, *(x,y)) 其中2代表游戏画面的帧数,(x, y)是一个像素值数组。我希望将它转换成 (1, *(x, y), 2) 形状的数组,这样数字 2 仍然代表帧索引,而 (x,y) 数组值被保留。 1 将用于索引训练神经网络的批次。

numpy.reshape(1, *(x,y), 2) 不保留 (x,y) 数组。

使用numpy.transpose(),例如:

import numpy as np

arr = np.arange(2 * 3 * 4).reshape((2, 3, 4))
arr.shape
# (2, 3, 4)

arr.transpose(1, 2, 0).shape
# (3, 4, 2)

new_arr = arr.transpose(1, 2, 0)[None, ...]
new_arr.shape
# (1, 3, 4, 2)

# the `(3, 4)` array is preserved:
arr.transpose(1, 2, 0)[:, :, 0] 
# array([[ 0,  1,  2,  3],
#        [ 4,  5,  6,  7],
#        [ 8,  9, 10, 11]])

arr[0, :, :]
# array([[ 0,  1,  2,  3],
#        [ 4,  5,  6,  7],
#        [ 8,  9, 10, 11]])