【发布时间】:2021-12-06 06:45:13
【问题描述】:
我面临的一般问题可以翻译如下:
编码一个 NxN 矩阵,其中 x 或 y 值的 mxm 个子矩阵定期交替。
例如,假设我需要制作一个 6x6 矩阵,其中 0 或 1 的 2x2 子矩阵交替进行,结果应该是下面的矩阵:
0 0 1 1 0 0
0 0 1 1 0 0
1 1 0 0 1 1
1 1 0 0 1 1
0 0 1 1 0 0
0 0 1 1 0 0
目前,我只设法得到这个:
0 0 1 0 0 0
0 0 1 0 0 0
1 1 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
代码:
b = numpy.zeros((6, 6))
b[:2, 2:6:4] = 1
b[2:6:4, :2] = 1
print(b)
我设法找到了一个解决方案,但它有四个 for 循环,因此很难阅读并且需要一些时间。这个可能的答案的代码是:
c = np.array([])
for k in range(3):
for l in range (2):
for i in range(3):
for j in range (2):
if (k+i)%2 == 0:
c = np.append(c, 0)
else:
c = np.append(c, 1)
print("c = ", np.reshape(c, (6, 6)))
难道没有更好的方法可以在不使用循环或最多 1 或 2 个循环的情况下提供预期输出吗?
【问题讨论】: