我正在玩图形和python,我正在尝试在代表邻接矩阵的所有可能的方阵上测试一些代码(即矩阵为0和1)。
我们知道nxn有2 ^ {n ^ 2}个可能的矩阵。
在python中生成所有可能的n x n二进制矩阵的最佳代码是什么?
答案 0 :(得分:3)
我认为通过使用numpy
而不是字符串操作的数学运算,您可以更有效地计算结果。尝试:
shift = np.arange(n*n).reshape(n, n)
for j in range(2**(n*n)):
yield j >> shift & 1
您也可以使用numpy来并行化j
循环,但这可能会比当前的生成器版本使用更多的内存。
答案 1 :(得分:1)
由于我找不到任何解决方案,我认为为其他人节省一些时间可能会有所帮助..
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)