Python矩阵索引超出范围

时间:2016-03-16 23:27:04

标签: python matrix indexing

我在python中有一个充满' ''#'的矩阵,我想检查矩阵中的位置是否有'#'' '围绕着他。这是一个例子:

if matrix[i-1][j] == ' ':
   do something
if matrix[i][j-1] == '#':
   do something

但这需要很多ifs因为我需要测试i != 0j != 0否则会检查一个甚至不存在的位置。 在python中有一种简单的方法吗?

1 个答案:

答案 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)包围。