在产生0/1随机序列时,需要产生彼此唯一的很多帧序列,以下是探索的一些方法:
1 产生彼此唯一的数字序列
1.1 numpy
使用 numpy.random.choice(a, size=None, replace=True, p=None)函数,该函数可以在一个指定的序列中随机挑选出彼此唯一的子数组
1.2 random
random库也是可以实现上述一样的功能,参考文章
random.sample(population, k)
但上述方法彼此唯一的元素只能是数字,我需要的序列。
2 产生彼此唯一的序列的序列
可以随机产生很多帧序列,然后使用某种挑选函数来实现序列彼此的唯一。
使用python 中的set函数
In [1]:list(set([1,2,3,4,1,2]))
Out[1]:[1,2,3,4]
In [2]:list(set([[1,2],[1,2],[2,3],[3,4]]))
TypeError: unhashable type: 'list'
In [3]:list(set([(1,2),(1,2),(2,3),(3,4)]))
Out[3]: [(1, 2), (3, 4), (2, 3)]
上述实验表明,set函数可以取唯一,但其列表中元素必须是“可哈希的“,即是不可变类型的,必须将序列转化为tuple才可以进行set操作,参考文章
但上述操作会造成输出不是按原来的顺序,关于顺序问题可以参考上述文章,我的工作目标是产生彼此唯一的多帧序列即可。