三维矩阵的Numpy排列

时间:2015-07-24 10:04:13

标签: python algorithm numpy matrix tuples

我有一个n x n x 2矩阵,我希望找到所有可能的排列,而不改变第三维中元素的顺序。
例如,如果我的矩阵是2 x 2 x 2并且具有以下值:

[[[1,2], [3,4]],  
  [5,6], [7,8]]  

然后可能的排列是:

[[[1,2], [3,4]],  
  [7,8], [5,6]]   

[[[3,4], [1,2]],  
  [5,6], [7,8]]   

[[[1,2], [7,8]],  
  [5,6], [3,4]] 

等。

换句话说,我想在找到排列时将元组视为单个值。

1 个答案:

答案 0 :(得分:1)

如下:

import numpy as np
import itertools

arr = np.array([[[1,2], [3,4]],
                [[5,6], [7,8]]])

for p in itertools.permutations(arr.reshape(-1, 2)):
    print(np.array(p).reshape(arr.shape))