我将尝试替换numpy矩阵中低于某个阈值的值,使用靠近相关单元格(即值低于阈值的单元格)的单元格的值的平均值。例如,让我们考虑这个10 * 10的矩阵(称为
以下是上述矩阵的图片。
在我的工作中,值低于阈值的单元格大多出现在块中(正如可以在矩阵中看到的那样)。目前,我正在用矩阵(
但是,我希望做得更好,并将低于阈值的元素值替换为相邻单元格的平均值,这些单元格与相关单元格相邻。这里,“好”的相邻单元格将是值高于阈值的相邻单元格。对于低于阈值的每个单元格,其周围的相邻单元格的大小选择上我有一定的灵活性(低于阈值的每个单元格的相邻单元格的大小将相同)。
以下图片形象地展示了我想要实现的内容。在下面给出的图片中,每个值低于阈值的斑点周围的红色边界表示最近邻。在这些有界框中,带有红色勾号的单元格是我们希望考虑其平均值以替换值低于阈值的单元格的单元格。
当我们发现值低于阈值的单元格时,我们期望看到大小不同的斑点;还有靠近边界的斑点。
在Python中,实现此目标的最佳方法是什么?非常感谢任何答案。
matrx
):matrx = np.array([[1,4,9,2,2,5,1,1,9,1],[2,4,3,5,2,2,1,2,1,1],
[3,4,-2,-3,4,2,3,5,1,2],[2,3,-3,-5,3,3,7,8,-4,1],[3,4,2,3,4,2,3,7,3,2],
[1,4,9,3,4,3,3,2,9,4],[2,1,3,5,2,2,3,2,3,3],
[3,6,8,3,7,2,3,5,3,2],[5,-2,-3,5,2,3,7,8,4,3],[4,-2,-3,1,1,2,3,7,3,5]])
print matrx
[[ 1 4 9 2 2 5 1 1 9 1]
[ 2 4 3 5 2 2 1 2 1 1]
[ 3 4 -2 -3 4 2 3 5 1 2]
[ 2 3 -3 -5 3 3 7 8 -4 1]
[ 3 4 2 3 4 2 3 7 3 2]
[ 1 4 9 3 4 3 3 2 9 4]
[ 2 1 3 5 2 2 3 2 3 3]
[ 3 6 8 3 7 2 3 5 3 2]
[ 5 -2 -3 5 2 3 7 8 4 3]
[ 4 -2 -3 1 1 2 3 7 3 5]]
假设阈值为零。目前,我正在使用以下方法找到值低于零的单元格的(2d)位置:
threshold = 0
mark_x = np.where( matrx<0 )[0]
mark_y = np.where( matrx<0 )[1]
以下是上述矩阵的图片。
![enter image description here](https://istack.dev59.com/rrW2O.webp)
matrx
)的平均值替换所有值低于阈值的单元格。但是,我希望做得更好,并将低于阈值的元素值替换为相邻单元格的平均值,这些单元格与相关单元格相邻。这里,“好”的相邻单元格将是值高于阈值的相邻单元格。对于低于阈值的每个单元格,其周围的相邻单元格的大小选择上我有一定的灵活性(低于阈值的每个单元格的相邻单元格的大小将相同)。
以下图片形象地展示了我想要实现的内容。在下面给出的图片中,每个值低于阈值的斑点周围的红色边界表示最近邻。在这些有界框中,带有红色勾号的单元格是我们希望考虑其平均值以替换值低于阈值的单元格的单元格。
![enter image description here](https://istack.dev59.com/dvBF6.webp)
在Python中,实现此目标的最佳方法是什么?非常感谢任何答案。
pcolor
生成这些图表。我会尝试寻找方法使它们更好看。 - Commonerpcolor()
函数,所以图片被反转了。另一种选择(也许你想看到的)是使用imshow()
函数,它会与打印的数组元素相对应。pcolor()
函数将原点(0,0)
放置在如同图形中通常做的那样;这就是我喜欢它的原因。 - Commonernumpy.ma.convolve
?即在卷积之前屏蔽无效值。这是一个未记录的函数,但自 NumPy 1.12 以来一直存在:https://github.com/numpy/numpy/pull/7922/files - John Zwinck