Python矩阵索引超出范围
我有一个python矩阵,里面满是Python矩阵索引超出范围,python,matrix,indexing,Python,Matrix,Indexing,我有一个python矩阵,里面满是'和'#',我想检查矩阵中的某个位置周围是否有'#'或'。以下是一个例子: if matrix[i-1][j] == ' ': do something if matrix[i][j-1] == '#': do something 但是这将需要很多ifs,因为我需要测试ifi!=0或j!=0否则它将检查甚至不存在的位置。 在python中有一种简单的方法可以做到这一点?不,您只需要让索引从i和j的(1,imax)而不是(0,imax)运行,以避免边
'
和'#'
,我想检查矩阵中的某个位置周围是否有'#'
或'
。以下是一个例子:
if matrix[i-1][j] == ' ':
do something
if matrix[i][j-1] == '#':
do something
但是这将需要很多ifs,因为我需要测试ifi!=0
或j!=0
否则它将检查甚至不存在的位置。
在python中有一种简单的方法可以做到这一点?不,您只需要让索引从i和j的(1,imax)而不是(0,imax)运行,以避免边缘 如果您还对元素索引周围各个方向的事物感兴趣,为什么不将所有相邻元素相加(首先将矩阵更改为0和1,矩阵名为aa): 将所有邻居的值相加。在您的例子中,8意味着被1(#s)包围,0被0(“”s)包围
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