我想编写一个算法来计算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都没有给出我想要的答案 你能帮我解决为什么以及如何解决它?