如何将 Numpy 数组从 (x,y,z) 重塑为 (y,z,x)

Leo*_*haw 2 python arrays numpy

我有一个维度数组 (3,120,100),我想将它转换为维度数组 (120,100,3)。我拥有的数组是

arr1 = np.ones((120,100), dtype = int)
arr2 = arr1*2
arr3 = arr1*3
arr = np.stack((arr1,arr2,arr3))
arr
Run Code Online (Sandbox Code Playgroud)

它包含三个 120x100 的 1、2 和 3 数组。当我对它使用 reshape 时,我得到 120x100 的 1、2 或 3 数组。

我想得到一个 120x100 的数组,其中每个元素都是 [1,2,3]

jde*_*esa 6

如果您想要一个包含 的大数组12并且3如您所描述的那样,user3483203 的答案将是值得推荐的选项。通常,如果您有一个具有形状的数组,(X, Y, Z)并且希望将其作为(Y, Z, X),则通常会使用np.transpose

import numpy as np

arr = ... # Array with shape (3, 120, 100)
arr_reshaped = np.transpose(arr, (1, 2, 0))
print(arr_reshaped.shape)
# (120, 100, 3)
Run Code Online (Sandbox Code Playgroud)

编辑:问题的标题说,你想从重塑一个数组(X, Y, Z)(Z, Y, X),但文字似乎暗示你想从重塑(X, Y, Z)(Y, Z, X)。我遵循了文本,但对于标题中的文本,它只是np.transpose(arr, (2, 1, 0)).