如何在Python中使生成的矩阵不重复?
我们已经创建了一个随机大小的矩阵,并且具有随机数字,但是我们不确定如何确保生成的字符串都不相同。作为参考,我们需要矩阵是非重复的,因为我们试图计算所有字符串集的递归教学维度(基本上是数据集的复杂性度量),如果任何字符串相同,就无法计算 生成的矩阵示例如下:如何在Python中使生成的矩阵不重复?,python,Python,我们已经创建了一个随机大小的矩阵,并且具有随机数字,但是我们不确定如何确保生成的字符串都不相同。作为参考,我们需要矩阵是非重复的,因为我们试图计算所有字符串集的递归教学维度(基本上是数据集的复杂性度量),如果任何字符串相同,就无法计算 生成的矩阵示例如下: [[0 0 0] [0 1 0] [0 1 0] [0 0 1] [1 0 0] [1 0 1] [0 0 0]] 如您所见,第二个和第三个字符串以及第一个和最后一个字符串是相同的 这是我们当前的代码。我们应该如何确保没有重复
[[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()
一种可能是在0和2^b-1之间选择一个不同的数字 并将其二进制表示形式用作A中的不同字符串
如果您没有专注于
numpy
,这里有一个使用“and”的选项:
导入itertools
随机输入
b=随机的随机范围(2,10)
a=random.randrange(2,2**b)
words=list(itertools.product([0,1],repeat=b))
矩阵=随机样本(单词,a)
打印(矩阵)
以固定值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)]
请注意,它返回元组,因此如果这很重要,则需要进行简单转换:
words=[itertools.product([0,1],repeat=b]中tup的列表(tup)]
据我所知,您的要求增加了尺寸限制。例如,如果b
像您的示例中那样是3
,那么a
必须是可能只有2^b个不同的字符串,因此如果a>2^b必须重复。首先创建一个经过所有设置位迭代(000001010011100101110111)的矩阵,然后随机洗牌行,怎么样,如果所需维度不同,最终也会随机删除行?啊,当然是itertools!我知道有一个更简单的方法
[(1, 0, 1),
(0, 1, 0),
(0, 1, 1),
(1, 0, 0),
(1, 1, 1),
(1, 1, 0),
(0, 0, 1)]