我了解矢量化的概念,以及当您想要调整每个单独的元素时如何避免使用循环来遍历元素,但是当我们有一个基于条件的条件时,我无法弄清楚如何做到这一点像素的相邻值。
例如,如果我有一个面具:
mask = np.array([[0,0,0,0],
[1,0,0,0],
[0,0,0,1],
[1,0,0,0]])
我想通过评估掩码中的相邻组件来更改元素,如下所示:
if sum(mask[j-1:j+2,i-1:i+2].flatten())>1 and mask[j,i]!=1:
out[j,i]=1
当我特别需要访问相邻元素时,如何对操作进行矢量化?
提前致谢。
完整循环:
import numpy as np
mask = np.array([[0,0,0,0], [1,0,0,0], [0,0,0,1], [1,0,0,0]])
out = np.zeros(mask.shape)
for j in range(len(mask)):
for i in range(len(mask[0])):
if sum(mask[j-1:j+2,i-1:i+2].flatten())>1 and mask[j,i]!=1:
out[j,i]=1
输出:
[[0. 0. 0. 0.]
[0. 0. 0. 0.]
[0. 1. 0. 0.]
[0. 0. 0. 0.]]