我们已经创建了一个随机大小、随机数字的矩阵,但是我们不确定如何确保生成的字符串都不相同。作为参考,我们需要矩阵是不重复的,因为我们试图计算所有字符串集合的递归教学维数——基本上是一个数据集的复杂度度量——如果所有字符串都是相同的,它就无法计算。 一个矩阵生成的例子是:
[[0 0 0]
[0 1 0]
[0 1 0]
[0 0 1]
[1 0 0]
[1 0 1]
[0 0 0]]
正如你所看到的,第二个和第三个字符串以及第一个和最后一个字符串是相同的。 这是我们当前的代码。我们应该如何确保没有重复?
def matrix():
import numpy as np
import random
a = random.randrange (2, 10)
b = random.randrange (2, a)
A = np.random.randint(2, size=(a,b))
print (A)
matrix()
问题来源StackOverflow 地址:/questions/59380377/how-to-make-generated-matrix-non-repeating-in-python
如果你不喜欢numpy,这里有一个使用itertools的产品和random的样本的选项:
import itertools
import random
b = random.randrange (2, 10)
a = random.randrange (2, 2**b)
words = list(itertools.product([0, 1], repeat=b))
matrix = random.sample(words, a)
print(matrix)
在b=3和a=7的固定值下运行得到:
[(1, 0, 1),
(0, 1, 0),
(0, 1, 1),
(1, 0, 0),
(1, 1, 1),
(1, 1, 0),
(0, 0, 1)]
注意product返回元组,因此如果这很重要,那么需要进行简单的转换:
words = [list(tup) for tup in itertools.product([0, 1], repeat=b)]
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。