我在python中有一个充满' '
和'#'
的矩阵,我想检查矩阵中的位置是否有'#'
或' '
围绕着他。这是一个例子:
if matrix[i-1][j] == ' ':
do something
if matrix[i][j-1] == '#':
do something
但这需要很多ifs因为我需要测试i != 0
或j != 0
否则会检查一个甚至不存在的位置。
在python中有一种简单的方法吗?
答案 0 :(得分:0)
不,你只是让你的索引从(1,imax)而不是(0,imax)运行i和j以避免边缘。
如果您对所有方向上的元素周围的事物感兴趣,为什么不像这样添加所有邻居(首先将矩阵更改为0和1,矩阵命名为aa):
import numpy as np
num_neighbors=np.zeros_like(aa)
for i in range(1,imax-1):
for j in range(1,jmax-1):
num_neighbors[i,j]= np.sum(aa[i-1:i+2,j-1:j+2]) - aa[i,j]
# you need to subtract the center , it's not a neighbor to self
总结所有邻居的价值观。在你的情况下,8意味着被1s(#s)包围,0被0('s)包围。