首页 > 解决方案 > 4x4 矩阵,对角线为 1(如十字),其他地方为 0,使用 python

问题描述

我能够得到棋盘格图案、+ 图案和边框上带有 1 的图案,但我无法弄清楚这一点。有人可以帮忙吗?

标签: pythonnumpy

解决方案


如果您坚持使用整个尺寸,那么正如@Péter Leéh指出的那样:

>>> np.eye(n) + np.fliplr(np.eye(n))
array([[1., 0., 0., 1.],
       [0., 1., 1., 0.],
       [0., 1., 1., 0.],
       [1., 0., 0., 1.]])

就足够了,np.fliplr(x)水平翻转)与np.flip(x, axis=1).

但是,如果n是奇数,则必须将中心元素替换为1. 例如 n=5

>>> x = np.eye(n) + np.fliplr(np.eye(n))
>>> x[n//2, n//2] = 1
array([[1., 0., 0., 0., 1.],
       [0., 1., 0., 1., 0.],
       [0., 0., 1., 0., 0.],
       [0., 1., 0., 1., 0.],
       [1., 0., 0., 0., 1.]])

推荐阅读