Если вы не хотите повторений, попробуйте встроенную утилиту itertools.permutations()
. Без каких-либо аргументов он вернет все возможные перестановки:
>>> import itertools
>>> list(itertools.permutations([1,2,3]))
[(1, 2, 3), (1, 3, 2), (2, 1, 3), (2, 3, 1), (3, 1, 2), (3, 2, 1)]
(отмечая, что в трехэлементном списке 6 перестановок)
Или с numpy массивами:
>>> import numpy as np
>>> [np.array(a) for a in (itertools.permutations([1,2,3]))]
[array([1, 2, 3]), array([1, 3, 2]), array([2, 1, 3]), array([2, 3, 1]), array([3, 1, 2]), array([3, 2, 1])]