使用 numpy
打印 nxn 棋盘图案的 Python 程序
原文:https://www . geesforgeks . org/python-program-print-checkboard-pattern-nxn-using-numpy/
给定 n,打印 n×n 矩阵的棋盘图案
n = 8 的棋盘图案:
它由 n * n 个正方形组成,白色为 0,黑色为 1。
我们可以使用嵌套循环的和一些 if 条件来做同样的事情,但是使用 Python 的 numpy 库,我们可以导入一个二维矩阵,并使用切片来获得棋盘模式。 W2 将使用以下 python 函数打印图案:
[x = np.zeros((n, n), dtype=int)](https://www.geeksforgeeks.org/numpy-zeros-python/)
使用这个函数,我们使用 numpy 初始化一个所有索引都为 0 的二维矩阵
- x[1::2:::2]= 1:从第一个索引行开始切片,直到 1+2+2…并从第 0 个到 0+2+2…用 1 填充所有列,以此类推。
- x[::2,1::2] = 1 :从第 0 行开始切片到 0+2+2…从 1 到 1+2+2+开始用 1 填充所有列…..
NP . zero 的函数((n,n),dtype=int) : 通常,数组的元素最初是未知的,但其大小是已知的。因此,NumPy 提供了几个函数来创建带有初始占位符内容的数组。这使得增长阵列的必要性最小化,而增长阵列是一项昂贵的操作。使用 dtype 参数用 int 数据类型初始化所有值。 例如:NP . 0,NP . 1 等。
# 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
基于棋盘格始终为偶数 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]]