计算numpy矩阵中周围的true(python)

Dom*_*ger 1 python numpy

我想做一个类似扫雷的东西

输入矩阵:

matrix = [[true, false, false],
          [false, true, false],
          [false, false, false]]
Run Code Online (Sandbox Code Playgroud)

如果场上有炸弹,我不会将其视为周围有炸弹。

我想过用 numpy convolve 来完成它,但我正在努力解决如何遍历矩阵并始终检查实际字段的左、上、右和下字段(在边框的情况下,我检查“空”字段,其中肯定是0)

在此输入图像描述

iba*_*ond 5

这是一个使用以下解决方案scipy.signal.convolve2d

import scipy
import numpy as np

# Input matrix, can be left as boolean
matrix = np.array([[True, False, False],
                   [False, True, False],
                   [False, False, False]])

# Our dougnut filter
W = np.array([[1, 1, 1],
              [1, 0, 1],
              [1, 1, 1]])

# Single convolve
res = convolve2d(matrix, W, 'same')
Run Code Online (Sandbox Code Playgroud)

我们得到准确的结果:

res
array([[1, 2, 1],
       [2, 1, 1],
       [1, 1, 1]])
Run Code Online (Sandbox Code Playgroud)