我想使用numpy创建一个5 x 7的网格,其中包含空格而不是0

lawou6xi  于 2022-12-23  发布在  其他
关注(0)|答案(2)|浏览(130)

我正在尝试创建一个带有空格的格网,其工作原理与带有0的格网相同
网格中的0与我的代码无关。我可以用1和2或其他元素组成一个网格,只要我修改一些期望为0的元素,代码的主体仍然可以工作。这是我现在的代码:

import numpy as np
def make_grid():
    board = np.zeros((5,7))
    return board
grid = make_grid()
print(grid)

这是我得到的:

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

这就是我想要的

[[ .  .  .  .  .  .  .]
 [ .  .  .  .  .  .  .]
 [ .  .  .  .  .  .  .]
 [ .  .  .  .  .  .  .]
 [ .  .  .  .  .  .  .]]

我还有这个功能:

def location(grid, col):
    return grid[4][col] == 0

什么我改变0到一旦我实现你的代码像以前一样,它是检查列是否满了,但如果网格是空格,我不能只是做一个““或点击空格键可以我,以取代0.
@Hanna代码这样做:

[[' ' ' ' ' ' ' ' ' ' ' ' ' ']
 [' ' ' ' ' ' ' ' ' ' ' ' ' ']
 [' ' ' ' ' ' ' ' ' ' ' ' ' ']
 [' ' ' ' ' ' ' ' ' ' ' ' ' ']
 [' ' ' ' ' ' ' ' ' ' ' ' ' ']
 [' ' ' ' ' ' ' ' ' ' ' ' ' ']]

我能做这个吗:

[[' '' '' '' '' '' '' ']
 [' '' '' '' '' '' '' ']
 [' '' '' '' '' '' '' ']
 [' '' '' '' '' '' '' ']
 [' '' '' '' '' '' '' ']
 [' '' '' '' '' '' '' ']]
0kjbasz6

0kjbasz61#

如果你想在屏幕上得到一个带有点和空格而没有引号的输出,试着定义你自己的打印函数:)

import numpy as np
def make_grid():
    board = np.full((5, 7), ' ')
    return board
grid = make_grid()

def my_print(grid):
    rows, cols = grid.shape
    for i in range(rows):
        print('[', end='')
        for j in range(cols):
            print(grid[i, j], end='.')
        print(']')

my_print(grid)

"""
[ . . . . . . .]
[ . . . . . . .]
[ . . . . . . .]
[ . . . . . . .]
[ . . . . . . .]
"""
def location(grid, col):
    return grid[4][col] == ' '

location(grid, 0)  # ---> True
j9per5c4

j9per5c42#

要创建一个由空格而不是零组成的网格,只需将调用np.zeros替换为调用np.empty,并传入所需的网格形状作为参数。np.empty函数创建一个具有未初始化值的数组,因此默认情况下数组的元素将是空格。以下是修改make_grid函数以创建一个由空格组成的网格的方法:

import numpy as np

def make_grid():
    board = np.empty((5,7))
    return board

grid = make_grid()
print(grid)

这将打印以下网格:

[[  .   .   .   .   .   .   .]
 [  .   .   .   .   .   .   .]
 [  .   .   .   .   .   .   .]
 [  .   .   .   .   .   .   .]
 [  .   .   .   .   .   .   .]]

要修改location函数以使用空格网格,只需更改比较运算符以检查元素是否等于空格字符而不是零。以下是修改location函数的方法:

def location(grid, col):
    return grid[4][col] == ' '

如果指定位置的元素是空格,则返回True,否则返回False。
请记住,使用空间网格不能处理某些需要数值的运算,如算术或统计函数。在这些情况下,您可能需要在执行运算之前将网格转换为数值格式。

相关问题