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)运行,以避免边

我有一个python矩阵,里面满是
'
'#'
,我想检查矩阵中的某个位置周围是否有
'#'
'
。以下是一个例子:

if matrix[i-1][j] == ' ':
   do something
if matrix[i][j-1] == '#':
   do something
但是这将需要很多ifs,因为我需要测试if
i!=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