【问题标题】:Generating all possible n*n binary matrix in python [closed]在python中生成所有可能的n * n二进制矩阵[关闭]
【发布时间】:2015-06-15 20:22:06
【问题描述】:

我正在使用图形和 python,我正在尝试在所有可能的表示邻接矩阵的方阵上测试一些代码(即具有 0 和 1 的矩阵)。

我们知道有 2^{n^2} 个可能的 nxn 矩阵。

在 python 中生成所有可能的 n x n 二进制矩阵的最佳代码是什么?

【问题讨论】:

标签: python matrix adjacency-matrix


【解决方案1】:

我认为您可以通过使用 numpy 的数学运算而不是字符串运算来更有效地计算结果。试试:

shift = np.arange(n*n).reshape(n, n)
for j in range(2**(n*n)):
    yield j >> shift & 1

您也可以使用 numpy 来并行化 j 循环,但这可能会使用比当前生成器版本更多的内存。

【讨论】:

    【解决方案2】:

    因为我无法在任何地方找到解决方案,我认为腾出一些时间给其他人可能会有所帮助..

    def generateAllBinaryMatrix(n):
        G = np.zeros([n,n])
    
        cordx=[]
        cordy=[]
        for x in range(0,n):
            for y in range(0,n):
                cordx.append(x)
                cordy.append(y)
    
        cx=np.array(cordx)
        cy=np.array(cordy)
        indices=(cx,cy)
        print indices
        raw_input()
        for j in range(0,2**(indices[0].size)):
            G[indices] = [1 if digit=='1' else 0 for digit in bin(j)[2:].zfill(indices[0].size)]
            yield (G)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-04-23
      • 2020-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-20
      • 1970-01-01
      相关资源
      最近更新 更多