【问题标题】:NumPy Array: Minesweeper - substituting random itemsNumPy Array: Minesweeper - 替换随机项目
【发布时间】:2019-01-09 14:58:57
【问题描述】:

我正在尝试制作“扫雷”游戏。我有一个 8 x 8 的 0 数组。我想用值 1 替换数组中的 8 个随机 0(代表“地雷”)。我不知道从哪里开始。这是我的代码:

import numpy as np
import sys
import random

a = np.array([(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, 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)])

for random.item in a:
    item.replace(1)
    print(a)

row = int(input("row "))
column = int(input("column "))

print(a[row - 1, column - 1])

如何将数组中的 8 个随机 0 替换为 1?

【问题讨论】:

  • 发布的解决方案对您有用吗?

标签: arrays numpy random minesweeper


【解决方案1】:

使用np.random.choice 不带替换选项-

In [3]: a # input array of all zeros
Out[3]: 
array([[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, 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]])

# Generate unique flattened indices and on a flattened view of
# input array assign those as 1s
In [8]: a.flat[np.random.choice(a.size,8,replace=False)] = 1

# Verify results
In [9]: a
Out[9]: 
array([[0, 0, 0, 0, 0, 1, 0, 0],
       [0, 0, 1, 0, 0, 0, 0, 0],
       [0, 1, 1, 0, 1, 0, 0, 0],
       [0, 0, 0, 1, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0, 0, 0],
       [0, 1, 0, 0, 1, 0, 0, 0],
       [0, 0, 0, 0, 0, 0, 0, 0]])

【讨论】:

    猜你喜欢
    • 2020-11-30
    • 2018-01-24
    • 2012-08-15
    • 1970-01-01
    • 1970-01-01
    • 2021-05-28
    • 2015-10-02
    • 2021-12-09
    • 1970-01-01
    相关资源
    最近更新 更多