Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中检查矩阵中close-by元素的值_Python_Python 3.x_Matrix - Fatal编程技术网

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

在python中检查矩阵中close-by元素的值,python,python-3.x,matrix,Python,Python 3.x,Matrix,考虑以下矩阵: [[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,(elemen

考虑以下矩阵:

[[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的顺序并不重要,只是它们的数量而已)。我一直在尝试使用一些算法来实现这一点,但首先需要花费大量时间,因为每个项目附近的元素不同,使用(例如)循环变得非常棘手,其次执行时间会变得非常长。我的问题是,是否有任何库或方法(如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
注意
范围
s中负责矩阵边界的
min
max
函数


由于python
bool
s是
int
的子类,因此
True
False
可以强制转换为
int
[0][1]
-元素的
len([1,0,0,0,1,0])=6
周围的元素?为什么呢请提供一个复制你的问题的例子。@HiroProgator谢谢你注意到这一点,我编辑了我的问题