如何从一维Numpy数组的所有排列中删除所有圆桌排列?

埃里克·尼斯特罗姆

我有这个向量:[a,a,b,c,c]这是一个以无穷大重复的模式,我想找到它的所有圆形唯一排列。

[a,a,b,c,c] = [a,b,c,c,a]不好(向右移动了1步)

[a,a,b,c,c] = [b,c,c,a,a]不好(向右移动2步)

[a,c,b,a,c]好的[b,c,a,a,c]好的

打个比方是:一个有5个座位的圆桌会议。以所有可能的独特方式将两个男性,一个女性和一个孩子(无性别)放置在一起。

这个numpy,scipy等有智能功能吗,非常感谢您的帮助。

布·埃里克

无聊

如果我对您的理解正确,那么类似的事情可以为您提供帮助

from itertools import permutations


vector = [1,-1,0,1,-1]
unique_permutations = set(permutations(vector))
already_reviewed = []
for p in list(unique_permutations):
    if p not in already_reviewed:
        circular_permutations = [p[i:] + p[:i] for i in range(len(p))]
        already_reviewed.extend(circular_permutations)
        unique_permutations.difference_update(circular_permutations[1:])

print(unique_permutations)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章