在 python 中检查矩阵中 close by 元素的值



考虑以下矩阵:

[[true,false,false,true], 
[false,false,true,false], 
[true,true,false,true]]

我希望python检查每个元素附近的元素的值。例如,[0][0] 元素为 true,它周围的三个元素为 false,因此它应该返回类似 [0,0,0] 的东西。

(element),false
false,false

对于 [0][1] 元素,结果应为 [1,0,0,1,0]:

true,(element),false
false,false,true

等等(0 和 1 的顺序并不重要,只是它们的数量(。我一直在尝试使用一些算法来做到这一点,但首先需要很多时间,因为每个项目附近的元素各不相同,并且使用(for,while(循环变得非常棘手,其次执行时间会变得很长。我的问题是,是否有任何库或方法(例如numpy(可以使我的工作更轻松?

这样的东西可能会起作用:

mat = [[True, False, False, True],
[False, False, True, False],
[True, True, False, True]]
max_i = len(mat)
max_j = len(mat[0])
def surrounding(i, j):
ret = []
for ii in range(max(0, i-1), min(i+2, max_i)):
for jj in range(max(0, j-1), min(j+2, max_j)):
if (ii, jj) == (i, j):
continue
ret.append(int(mat[ii][jj]))
return ret

请注意range中的minmax函数,它们负责处理矩阵的边界。

由于 Pythonbool无论如何都是int的子类,因此TrueFalse可以转换为int

最新更新