Search code examples
pythonnumpypermutation

Permutation of 2D matrix


I would like to be able to generate all unique permutations of a 2d array in python and keep the order. Let's say I have a 2D matrix [[1, 2, 3], [4, 5, 6]]. Expected result should be a in 8 x 3 in the form [[1, 2, 3], [1, 2, 6], [1, 5, 3], [1, 5, 6], [4, 2, 3], [4, 2, 6], [4, 5, 3], [4, 5, 6]].

Thanks


Solution

  • Transpose the array, and then use itertools.product:

    from itertools import product
    
    list(map(list, product(*zip(*data))))
    

    This outputs:

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