开发者社区> 问答> 正文

如何使生成的矩阵在Python中不重复?

我们已经创建了一个随机大小、随机数字的矩阵,但是我们不确定如何确保生成的字符串都不相同。作为参考,我们需要矩阵是不重复的,因为我们试图计算所有字符串集合的递归教学维数——基本上是一个数据集的复杂度度量——如果所有字符串都是相同的,它就无法计算。 一个矩阵生成的例子是:

[[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

展开
收起
kun坤 2019-12-28 14:22:03 908 0
1 条回答
写回答
取消 提交回答
  • 如果你不喜欢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)]
    
    2019-12-28 14:22:07
    赞同 展开评论 打赏
问答分类:
问答地址:
相关产品:
问答排行榜
最热
最新

相关电子书

更多
From Python Scikit-Learn to Sc 立即下载
Data Pre-Processing in Python: 立即下载
双剑合璧-Python和大数据计算平台的结合 立即下载