将 Numpy 数组从 (3, 2, 3) 重塑为 (3, 3, 2)
Reshaping Numpy Array from (3, 2, 3) to (3, 3, 2)
我有以下形状为 (3, 2, 3) 的 3d numpy 数组。
[
[[ 0 1 2]
[ 3 4 5]]
[[ 6 7 8]
[ 9 10 11]]
[[12 13 14]
[15 16 17]]
]
但是,我需要按以下顺序重塑为 (3, 3, 2):
[
[[ 0 3]
[ 6 9]
[12 15]]
[[ 1 4]
[ 7 10]
[13 16]]
[[ 2 5]
[ 8 11]
[14 17]]
]
我目前正在使用 Jupyter 进行大量试验和错误。
感谢您的任何建议!
要定义原始数组,可以使用:
np.arange(18).reshape(3,2,3)
正如@Divakar 在评论中提到的,您可以使用:
np.arange(18).reshape(3,2,3).transpose(2,0,1)
得到想要的结果。
来自 np.transpose
documentation:
axes: By default, reverse the dimensions, otherwise permute the axes
according to the values given.
2,0,1
是从 (3,2,3)
形状到 (3,3,2)
所需的排列。它还会将 (3400, 7, 100)
形状转换为 (100, 3400, 7)
.
另一种方法是使用np.rollaxis
(来自@Divakar 的另一个提示):
np.rollaxis(np.arange(18).reshape(3,2,3),2)
我有以下形状为 (3, 2, 3) 的 3d numpy 数组。
[
[[ 0 1 2]
[ 3 4 5]]
[[ 6 7 8]
[ 9 10 11]]
[[12 13 14]
[15 16 17]]
]
但是,我需要按以下顺序重塑为 (3, 3, 2):
[
[[ 0 3]
[ 6 9]
[12 15]]
[[ 1 4]
[ 7 10]
[13 16]]
[[ 2 5]
[ 8 11]
[14 17]]
]
我目前正在使用 Jupyter 进行大量试验和错误。
感谢您的任何建议!
要定义原始数组,可以使用:
np.arange(18).reshape(3,2,3)
正如@Divakar 在评论中提到的,您可以使用:
np.arange(18).reshape(3,2,3).transpose(2,0,1)
得到想要的结果。
来自 np.transpose
documentation:
axes: By default, reverse the dimensions, otherwise permute the axes according to the values given.
2,0,1
是从 (3,2,3)
形状到 (3,3,2)
所需的排列。它还会将 (3400, 7, 100)
形状转换为 (100, 3400, 7)
.
另一种方法是使用np.rollaxis
(来自@Divakar 的另一个提示):
np.rollaxis(np.arange(18).reshape(3,2,3),2)