【发布时间】:2021-08-30 04:57:08
【问题描述】:
所以我有以下带有给定输入的代码:
import numpy as np
x = np.matrix([[1,1,1,1,0],
[1,1,1,0,0],
[1,1,0,0,0],
[1,0,0,0,0]])
print(x)
def MIZ(mat,check):
for j in range(0,mat.shape[0]):
for i in range(0,mat.shape[1]):
try:
if mat[i,j] == 1:
if mat[i+check,j] == 0 or \
mat[i-check,j] == 0 or \
mat[i,j+check] == 0 or \
mat[i,j-check] == 0:
mat[i,j] = 2
except:
pass
return mat
print(MIZ(x,1))
这个想法很简单;因为位于 0 旁边的所有 1 都将转换为 2。此处的“check”参数理想情况下应该是可调整的,这样如果“check=2”,则有 0 个空格的 1 也将转换为 2,依此类推。现在问题出现在矩阵中的第一个元素(索引 = 0,0),因为那时 i-1 和 j-1 都是 -1,出于我的目的,我想避免这种情况并将其仅限于周围元素。
代码的当前结果是:
[[2 2 2 2 0]
[2 1 2 0 0]
[2 2 0 0 0]
[1 0 0 0 0]]
还有最低的 1 没有被转换为 2 的问题,但这是次要问题。
【问题讨论】:
标签: python numpy matrix indexing numpy-ndarray