在Python中使用平铺函数的n*n矩阵

2024-09-30 04:31:38 发布

您现在位置:Python中文网/ 问答频道 /正文

如何使用tile function创建一个‘n*n’的棋盘矩阵,其值为alternate0 and 1。在

例如: 当n的值为2时,输出应为: [[0 1] [1 0]]

我可以创建一个matrix with 0 and 1,但它们不会交替出现,下面是我尝试的:

`

import numpy as np
n = 4
arr = ([0,1])
print(np.tile(arr,(n,n//2)))
`

我得到的输出:

`

^{pr2}$

我想要的输出:

`

[[0 1 0 1]
 [1 0 1 0]
 [0 1 0 1]
 [1 0 1 0]]`

Tags: andimportnumpy棋盘aswithnpfunction
3条回答

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

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

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

相当于

^{pr2}$

以下是numpy解决方案:

a = np.resize([0,1], n)
m = np.abs(a-np.array([a]).T)

它给出了n的各种值:

^{pr2}$

您可以使用numpy fancy indexing,无需使用np.tile

import numpy as np

def tiling(n):
    result = np.zeros((n, n))
    result[::2, 1::2] = 1
    result[1::2, ::2] = 1
    return result


print(tiling(2))
print()
print(tiling(4))

输出

^{pr2}$

相关问题 更多 >

    热门问题