📜  使用 numpy 打印 nxn 棋盘图案的Python程序

📅  最后修改于: 2022-05-13 01:54:19.847000             🧑  作者: Mango

使用 numpy 打印 nxn 棋盘图案的Python程序

给定 n,打印 anxn 矩阵的棋盘模式

n = 8 的棋盘模式:

它由 n * n 个正方形组成,0 代表白色,1 代表黑色。

我们可以使用嵌套的 for 循环和一些 if 条件来做同样的事情,但是使用 Python 的 numpy 库,我们可以导入一个二维矩阵并使用切片获取棋盘模式。
W2 将使用以下Python函数来打印模式:

x = np.zeros((n, n), dtype=int)

使用这个函数,我们使用 numpy 初始化一个在所有索引处都为 0 的二维矩阵

  • x[1::2, ::2] = 1 :从第一个索引行切片到 1+2+2... 并用 1 从第 0 到 0+2+2... 填充所有列。
  • x[::2, 1::2] = 1 :从第 0 行切片到 0+2+2… 并用 1 从 1 开始填充所有列到 1+2+2+…..

函数 ((n, n), dtype=int) 的功能:通常,数组的元素最初是未知的,但它的大小是已知的。因此,NumPy 提供了几个函数来创建具有初始占位符内容的数组。这些最大限度地减少了增长阵列的必要性,这是一项昂贵的操作。使用 dtype 参数初始化所有具有 int 数据类型的值。
例如:np.zeros、np.ones 等。

# Python program to print nXn
# checkerboard pattern using numpy
  
import numpy as np
  
# function to print Checkerboard pattern
def printcheckboard(n):
      
    print("Checkerboard pattern:")
  
    # create a n * n matrix
    x = np.zeros((n, n), dtype = int)
  
    # fill with 1 the alternate rows and columns
    x[1::2, ::2] = 1
    x[::2, 1::2] = 1
      
    # print the pattern
    for i in range(n):
        for j in range(n):
            print(x[i][j], end =" ") 
        print() 
  
  
# driver code
n = 8
printcheckboard(n)

输出:

Checkerboard pattern:
0 1 0 1 0 1 0 1 
1 0 1 0 1 0 1 0 
0 1 0 1 0 1 0 1 
1 0 1 0 1 0 1 0 
0 1 0 1 0 1 0 1 
1 0 1 0 1 0 1 0 
0 1 0 1 0 1 0 1 
1 0 1 0 1 0 1 0 

基于 Checkerboard 始终是偶数 nXn 的假设改进的源代码,即 n 是偶数

# Python program to print nXn Assuming that n 
# is always even as a checkerboard was
  
import numpy as np
def printcheckboard(n):
    final = []
    for i in range(n):
        final.append(list(np.tile([0,1],int(n/2))) if i%2==0 else list(np.tile([1,0],int(n/2))))
    print(np.array(final))
  
  
# driver code
n = 8
printcheckboard(n)

输出:

Checkerboard pattern:
[[0 1 0 1 0 1 0 1]
 [1 0 1 0 1 0 1 0]
 [0 1 0 1 0 1 0 1]
 [1 0 1 0 1 0 1 0]
 [0 1 0 1 0 1 0 1]
 [1 0 1 0 1 0 1 0]
 [0 1 0 1 0 1 0 1]
 [1 0 1 0 1 0 1 0]]