为了便于解释,我将使用 2 维 numpy 数组(我在我的问题中使用 3 维数组)。
我有 2 个数组,一个记录在这些特定坐标处发生某些事情的几率。另一个数组是一个预先生成的矩阵,用于降低第一个数组在预定半径中的中心点周围的值。
我想自动选择第一个矩阵(以下称为 A)中的点,并防止程序选择另一个离先前选择的点太近的点。所以我想将所选点周围的值与与所述点的距离相乘。
例如:
矩阵 A:
[[0, 0, 0, 0, 0, 0],
[0, 1, 2, 2, 1, 0],
[0, 2, 4, 4, 2, 0],
[0, 2, 4, 4, 2, 0],
[0, 1, 2, 2, 1, 0],
[0, 0, 0, 0, 0, 0]]
矩阵 B:
[[ 1, 0.5, 1 ],
[0.5, 0, 0.5],
[ 1, 0.5, 1 ]]
现在说索引 [2, 1] 被选为兴趣点。B 与 A 相乘,但仅与 [2, 1] 周围的 3*3 中的值相乘
结果:
[[0, 0, 0, 0, 0, 0],
[0, 0.5, 0, 1, 1, 0],
[0, 2, 2, 4, 2, 0],
[0, 2, 4, 4, 2, 0],
[0, 1, 2, 2, 1, 0],
[0, 0, 0, 0, 0, 0]]
这应该导致 [2, 1] 周围的点没有足够的价值被选为兴趣点,除非条件足够高以至于无论如何都可以选择,因此需要乘法。
现在,我似乎无法找到一种方法来执行这种特定的乘法。numpy.multiply()
将重复 B 以便将其应用于整个矩阵 A,而我只想将其应用于 A 的一小部分。
另一种选择是遍历矩阵 A 的受影响部分,但这需要大量时间(尤其是在 3 维矩阵中)
换句话说,我想应用一个卷积滤波器,而不是在最后对乘法结果求和,而是将它们应用于卷积矩阵 (A) 的基础值
对此问题的任何见解表示赞赏。