我正在寻找一种方法在Python中:一次只排列矩阵的某些块。拼接矩阵排列在Python中的块中完成
具体而言,我想要一个矩阵,其中:
- 对角线包含全零
- divding行和列分成相等大小的块的其余部分的大小为n的正方形块,而代以在将该块的大小矩阵分配到每个块中。
- 运行这个新的矩阵测试,如果失败了,换个新的矩阵为P
这里是什么,我想,如果不是那么清晰的图像: http://s27.postimg.org/syimn1zvn/photo.jpg
其中P [i]是由一行所定义的矩阵:
for per in itertools.permutations(range(n)):
matrix = [[0 for x in xrange(n)] for x in xrange(n)]
for i, j in enumerate(per):
matrix[i][j] = 1
print matrix
如果这些行中的一个未得到满意的结果,一旦输入到矩阵我想与第二行以替换块。现在
,我已经做了类似的工作,我只与拼接特定线路的工作,然后通过所有可能的排列运行,如:
row = list(perm_unique([1,0])) #this gives the unique permutations of the items
zs = list((0,0))
for a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12 in product(row, repeat=12):
M, N, O, P, Q, R, = ([] for i in range(6))
M = list(chain(zs,a1,a2))
N = list(chain(zs,a3,a4))
O = list(chain(a5,zs,a6))
P = list(chain(a7,zs,a8))
Q = list(chain(a9,a10,zs))
R = list(chain(a11,a12,zs))
A = list()
A.append(M)
A.append(N)
A.append(O)
A.append(P)
A.append(Q)
A.append(R)
B = np.asarray(A)
不幸的是,我发现它非常难找到方法来做同样的过程,但用块或小矩阵代替简单的线。如果有人可以给我任何想法或批评。我只学习了如何编写Python不到两周的时间,所以很想听到任何人的建议。
使用numpy,它具有用于寻址矩阵块的本地语法。 –
这个问题现在看起来很荒谬,我有几年的经验。 – prappolt
(几年前的最后一次编辑如此激烈,在这里通常被认为是破坏行为,在之前的版本中可能会更好,所以我已经回滚了)。 – halfer