如何在numpy中部分地压平立方体(或更高维度的ndarray)?

时间:2015-09-23 15:16:27

标签: python numpy multidimensional-array flatten

我试图在一个轴上将numpy中的3d数组展平(也就是说,在轴上缩小并在另一个轴上展平) 例如,如果我有

X = array(
    [[[ 0, 1, 2, 3],
      [ 4, 5, 6, 7],
      [ 8, 9,10,11]],
     [[12,13,14,15],
      [16,17,18,19],
      [20,21,22,23]]])

我想在这里找到转X的操作:

array([
   [ 0, 1, 2, 3,12,13,14,15],
   [ 4, 5, 6, 7,16,17,18,19],
   [ 8, 9,10,11,20,21,22,23]])

我发现在这种情况下np.concatenate((X[0],X[1]), axis=1)提供了解决方案,但是我想要一种更通用和有效的方法来为N维numpy数组执行此操作。

1 个答案:

答案 0 :(得分:0)

使用numpy.transpose

>>> X.transpose(1, 0, 2).ravel()
array([ 0,  1,  2,  3, 12, 13, 14, 15,  4,  5,  6,  7, 16, 17, 18, 19,  8,
        9, 10, 11, 20, 21, 22, 23])