Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.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 识别矩阵中相邻元素的性质_Python_Python 3.x_Matlab_Numpy_Matrix - Fatal编程技术网

Python 识别矩阵中相邻元素的性质

Python 识别矩阵中相邻元素的性质,python,python-3.x,matlab,numpy,matrix,Python,Python 3.x,Matlab,Numpy,Matrix,有一个像这样的矩阵 9 9 1 9 9 9 9 1 9 9 1 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 1 9 9 9 9 9 9 9 9 9 9 1 1 1 9 9 9 9 9 1 9 9 9 9 9 1 9 9 9 9 9 9 1 9 1 9 9 9 我想检测矩阵中的每个位置,是否至少有一个值1或对相关矩阵进行舍入,以便对于{2,2}中的元素,我想检查{1,1}、{1,2}、{1,3}、{2,1}、{2,3}、{3,3}中的值,如果提到的任何位置包含1,然后我将元素存储

有一个像这样的矩阵

9 9 1 9 9 9 9 1
9 9 1 9 9 9 9 9
9 9 9 9 9 9 9 9
9 9 1 9 9 9 9 9
9 9 9 9 9 1 1 1
9 9 9 9 9 1 9 9
9 9 9 1 9 9 9 9
9 9 1 9 1 9 9 9
我想检测矩阵中的每个位置,是否至少有一个值
1
或对相关矩阵进行舍入,以便对于
{2,2}
中的元素,我想检查
{1,1}、{1,2}、{1,3}、{2,1}、{2,3}、{3,3}中的值,如果提到的任何位置包含1,然后我将元素存储在
{2,2}
中的一个单独变量中


我不知道如何解决这个问题,想知道是否有任何pythonic函数或方法可以做到这一点?

您可以从中获得灵感并使用
conv2

在MATLAB中(您说的是“pythonic”,但标记为MATLAB),如下所示:

numneighbours = conv2( A==1, [1 1 1; 1 0 1; 1 1 1], 'same' );
现在您需要
numneighbours>0

output = A(numneighbours > 0);
这当然可以在一行中完成


这是一个Python等价于MATLAB的
conv2

一个可能的解决方案是一个掩码,它用一个正方形3x3指示一个值的位置,如下所示:

onesMask = mat==1;
res = imdilate(mask,strel('square',3)) & ~onesMask;
结果:

 0     1     0     1     0     0     1     0
 0     1     0     1     0     0     1     1
 0     1     1     1     0     0     0     0
 0     1     0     1     1     1     1     1
 0     1     1     1     1     0     0     0
 0     0     1     1     1     0     1     1
 0     1     1     0     1     1     1     0
 0     1     0     1     0     1     0     0

你没有表现出你所做的任何努力。我真的不知道怎么做,我需要一些帮助,这就是为什么我发布了这篇文章。这里有几个帖子可以让你开始:另外,邻居检查是康威生活游戏的一个重要组成部分。您可以检查不同的实现,看看它是如何实现的。值得注意的是,
imdigrate
需要MATLAB中的图像处理工具箱。