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

2024-06-02 07:44:38 发布

您现在位置:Python中文网/ 问答频道 /正文

考虑以下矩阵:

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

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

^{pr2}$

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

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

以此类推(0和1的顺序并不重要,只是它们的数量)。我一直在尝试使用一些算法来实现这一点,但首先,由于每个项附近的元素不同,需要花费大量的时间,并且使用(for,while)循环变得非常棘手,第二,执行时间将变得非常长。我的问题是,有没有什么库或方法(比如numpy)可以让我的工作更轻松?在


Tags: 实例算法falsetrue元素for数量顺序
1条回答
网友
1楼 · 发布于 2024-06-02 07:44:38

类似这样的方法可能会奏效:

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

注意min和{}函数在range中,它们负责矩阵的边界。在

由于python boolint的子类,True和{}可以被强制转换为int。在

相关问题 更多 >