Python 如何使用3x3矩阵创建遮罩过滤器

Python 如何使用3x3矩阵创建遮罩过滤器,python,matrix,filtering,Python,Matrix,Filtering,我想将一个3x3矩阵掩码传递给一个较大矩阵的每个元素 3x3基质应具有以下构象: Mask=[(,,), (,,), (,,)] 如果在较大的矩阵中发现任何负值,则该值必须替换为掩码矩阵中其他八个数字的平均值 例如: A=[(1,2,3,4,5), (3, 3, 1, 1, 1), (4, 5, -1, 3, 1), (1, 2, 2, 7, 3), (1, 2, 2, 7, 3)] 结果=平均值(3,1,1,5,3,2,2,7)=3 有人能建议如何在python中实现这一点吗?提供了一些相

我想将一个3x3矩阵掩码传递给一个较大矩阵的每个元素

3x3基质应具有以下构象:

Mask=[(,,),
(,,),
(,,)]
如果在较大的矩阵中发现任何负值,则该值必须替换为掩码矩阵中其他八个数字的平均值

例如:

A=[(1,2,3,4,5),
(3, 3, 1, 1, 1),
(4, 5, -1, 3, 1),
(1, 2, 2, 7, 3),
(1, 2, 2, 7, 3)]
结果=平均值(3,1,1,5,3,2,2,7)=3


有人能建议如何在python中实现这一点吗?

提供了一些相关的答案,用于提取矩阵中元素的周围元素。然后,您只需计算该子集中所有正元素的平均值来执行替换。这听起来类似于图像形态学。为了清晰起见:如果第一行的第一个元素为负怎么办?在这种情况下,您会选择由第1-3行和第1-3列组成的3x3矩阵,还是选择位于左上角由第1-2行和第1-2列组成的2x2矩阵?如果有两个相邻的
-1
s,您会怎么做?或者如果有许多
-1
s?除非您对3x3窗口中不超过一个
-1
s施加约束,否则您可能需要添加有关如何处理窗口中2-9个
-1
s的附加信息。在存在两个或更多相邻负值的情况下,我会尝试通过过滤器,如果仍然存在问题,请尝试再次通过。