如何在保留 (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]])
我想将形状数组 (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]])