python中使用tile函数的n*n矩阵

python中使用tile函数的n*n矩阵,python,numpy,tile,Python,Numpy,Tile,如何使用平铺功能创建值交替为0和1的'n*n'棋盘矩阵 例如: 当n的值为2时,输出应为: [[0 1] [10]] 我可以用0和1创建一个矩阵,但它们不是交替出现的,下面是我尝试的: ` 我得到的输出: ` 我想要的输出: ` 您可以使用numpy fancy,无需使用: 输出 [[0. 1.] [1. 0.]] [[0. 1. 0. 1.] [1. 0. 1. 0.] [0. 1. 0. 1.] [1. 0. 1. 0.]] 这里是一个单线numpy解决方案。也就是说,我认为

如何使用
平铺功能
创建值交替为
0和1的
'n*n'
棋盘矩阵

例如: 当n的值为2时,输出应为:

[[0 1] 
[10]]

我可以用0和1创建一个
矩阵,但它们不是交替出现的,下面是我尝试的:

`

我得到的输出:

`

我想要的输出:

`

您可以使用numpy fancy,无需使用:

输出

[[0. 1.]
 [1. 0.]]

[[0. 1. 0. 1.]
 [1. 0. 1. 0.]
 [0. 1. 0. 1.]
 [1. 0. 1. 0.]]

这里是一个单线numpy解决方案。也就是说,我认为丹尼尔的回答更具可读性,可能更有效

如果
n
为奇数,则
np.arange(n*n).重塑(n,n)%2
给出正确的结果。但是,如果
n
为偶数,则所有行和列都将相同(与您的结果相同)。我们可以通过每隔一行减去一行来解决这个问题

tile = (np.arange(n*n).reshape(n,n)-np.arange(n).reshape(n,1)*(n%2+1))%2
相当地

tile = (np.arange(n*n).reshape(n,n,order='F')-np.arange(n)*(n+1))%2

下面是一个
numpy
解决方案:

a = np.resize([0,1], n)
m = np.abs(a-np.array([a]).T)
它给出了
n
的各种值:

n = 2
array([[0, 1],
       [1, 0]])

n = 3
array([[0, 1, 0],
       [1, 0, 1],
       [0, 1, 0]])

n = 4
array([[0, 1, 0, 1],
       [1, 0, 1, 0],
       [0, 1, 0, 1],
       [1, 0, 1, 0]])

另一篇文章的答案与下面相同。我想用tile()函数来实现这一点。有一个答案在副本中也使用了tile。谢谢,我相信你指的是以下解决方案:tile=(np.arange(n*n)。重塑(n,n)-np.arange(n)。重塑(n,1)*(n%2+1))%2我是python新手,所以这可能是个愚蠢的问题。但是,我们在哪里使用tile()函数呢?我们使用的是一个名为tile的变量,而不是tille()函数。如果我错了,请纠正我。这可以通过使用result=np来实现。tile([[0,1],[1,0],(n//2,n//2)),其中n用于创建n*n矩阵。这是卓越的。我想专门使用tile()函数来实现这一点。请建议如何做到这一点。我想特别使用tile()函数来实现这一点。@Manish我已经更新了这个答案,我希望这就是你想要的
tile = (np.arange(n*n).reshape(n,n)-np.arange(n).reshape(n,1)*(n%2+1))%2
tile = (np.arange(n*n).reshape(n,n,order='F')-np.arange(n)*(n+1))%2
a = np.resize([0,1], n)
m = np.abs(a-np.array([a]).T)
n = 2
array([[0, 1],
       [1, 0]])

n = 3
array([[0, 1, 0],
       [1, 0, 1],
       [0, 1, 0]])

n = 4
array([[0, 1, 0, 1],
       [1, 0, 1, 0],
       [0, 1, 0, 1],
       [1, 0, 1, 0]])