我有一个3D numpy数组,我需要重塑和整理。例如,我有x=np.array([np.array([np.array([1,0,1]),np.array([1,1,1]),np.array([0,1,0]),np.array([1,1,0])]),np.array([np.array([0,0,1]),np.array([0,0,0]),np.array([0,1,1]),np.array([1,0,0])]),np.array([np.array([1,0,0]),np.array([1,0,1]),np.array([1,1,1]),np.array([0,0,0])])])
这是(3,4,3)的形状,打印时我得到:
array([[[1, 0, 1],
[1, 1, 1],
[0, 1, 0],
[1, 1, 0]],
[[0, 0, 1],
[0, 0, 0],
[0, 1, 1],
[1, 0, 0]],
[[1, 0, 0],
[1, 0, 1],
[1, 1, 1],
[0, 0, 0]]])
现在我需要通过在每个子阵列中选择相同的索引并将它们组合在一起来将这个数组重新整形为(4,3,3)
:
array([[[1,0,1],[0,0,1],[1,0,0]],
[[1,1,1],[0,0,0],[1,0,1]],
[[0,1,0],[0,1,1],[1,1,1]],
[[1,1,0],[1,0,0],[0,0,0]]]
我尝试reshape
,各种堆叠,没有任何效果(按照我的需要排列数组)。我知道我可以手动完成,但手动大型阵列不是一种选择。
任何帮助将不胜感激。 感谢
答案 0 :(得分:3)
答案 1 :(得分:0)
对于更高维数组,转置将接受一个轴编号元组来置换轴:
import numpy as np
foo = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]], [[9, 10], [11, 12]]])
foo.transpose(1, 0, 2)
结果:
array([[[ 1, 2],
[ 5, 6],
[ 9, 10]],
[[ 3, 4],
[ 7, 8],
[11, 12]]])