一维数组的排列组合,可以通过矩阵运算来实现吗?

对于一列数组的排列组合,可以通过双层循环来实现。

那么对于 NumPyMATLAB 这些高级数据科学语言来说,有没有更简便的方法或语句来代替双层循环呢?

可以是数学上矩阵知识的解决方法,也可以是语言库中封装的函数。

阅读 3.2k
1 个回答

排列:itertools.permutations(iterable, r=None)
组合:itertools.combinations(iterable, r)

例子:

>>> from itertools import permutations, combinations
>>> a = [1, 2, 3]
>>> list(permutations(a))
[(1, 2, 3), (1, 3, 2), (2, 1, 3), (2, 3, 1), (3, 1, 2), (3, 2, 1)]
>>> for r in range(len(a)):
...     print(list(combinations(a, r+1)))
[(1,), (2,), (3,)]
[(1, 2), (1, 3), (2, 3)]
[(1, 2, 3)]
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题