1

我想编写一个算法来计算 3D 数组的 3*3 窗口中元素的总和,而没有窗口中心的值

例如,对于输入 A :

A1 = np.array([[1,1,0],[0,0,0],[0,0,0]])
A2 = np.array([[0,0,0],[0,1,0],[0,0,0]])
A3 = np.array([[0,0,0],[0,0,0],[0,0,1]])
A = np.array ([A1,A2,A3])

我想获得输出B:

([[1,1,0],[0,0,0],[0,0,0]])
([[0,0,0],[0,3,0],[0,0,0]])
([[0,0,0],[0,0,0],[0,0,1]])

所以我写了这些代码

Neighborhood = np.ones((3,3,3))
Neighborhood[1,1,1]=0 # take off the center
B1 = scipy.ndimage.generic_filter(A,np.sum,footprint = Neighborhood, origin =(1,1,1) )
B2 = scipy.ndimage.convolve(A,Neighborhood)

但是 B1 和 B2 都没有给出我想要的答案你能帮我理解为什么以及如何解决它吗?

4

0 回答 0