繁体   English   中英

Numpy 3D阵列安排和重塑

[英]Numpy 3D array arranging and reshaping

我有一个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)(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 ,各种堆叠,没有任何工作(按照我的需要排列阵列)。 我知道我可以手动完成,但手动大型阵列不是一个选择。

任何帮助都感激不尽。 谢谢

swapaxes将做你想要的。 也就是说,如果您的输入数组是x并且您想要的输出是y ,那么

np.all(y==np.swapaxes(x, 1, 0))

应该给予True

对于更高维数组,转置将接受轴编号的元组来置换轴:

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]]])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM