Python 如何在numpy中部分展平立方体(或高维阵列)?

Python 如何在numpy中部分展平立方体(或高维阵列)?,python,numpy,multidimensional-array,flatten,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],

我正在尝试将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数组执行此操作。

使用:


谢谢你@ashwini,但这不是我想要的解决方案。在这种情况下,数组应具有(3,8)shape@JoãoP.Ceia Do
X.transpose(1,0,2)。重塑(X.shape[1],X.shape[2]*X.shape[0])
。。。但是你能为我们这些正在学习转置和重塑之间的联系的人详细阐述一下规则吗。文档中没有很好地介绍它。你能解释一下当你说
N维数组
,从哪个维度到哪个维度吗?我在猜测
N
N-1
?@Anand,我在寻找一个通用的解决方案,从维度
I
到维度
j
@JoãoP.Ceia编辑一个4D数组示例的问题?@Divakar,我可以用代码创建另一个示例,但是如果你想象一个立方体(或矩形)数组,它会更容易-也就是-一个4D阵列。如果我想减少第四维,我想让它位于(预选)立方体的一个轴上(左右侧、上下侧或前后侧)。@JoãoP.Ceia恐怕我仍然认为列出
4D
数组更有意义。
>>> 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])