有没有简单的方法计算下面的数组?
uc(i,j) = 0.25d0*(u(i,j+1)+u(i+1,j+1)+u(i+1,j)+u(i,j))
字符串
我试过了
from scipy.ndimage import generic_filter
generic_filter(A, np.nanmean, mode='constant', cval=np.nan, size=2)
型
但这不起作用。比如说
A= np.array([[3, 4, 5],
[5, 6, 7],
[7, 8, 9]])
型
则通用过滤器的结果是:
array([[3, 3, 4],
[4, 4, 5],
[6, 6, 7]])
型
我期望第一个元素是=(3+4+5+6)/4 =4.5
如何在numpy中进行区域平均?
2条答案
按热度按时间nfg76nw01#
您可以使用
scipy.ndimage.correlate
(或scipy.ndimage.convolve
)来过滤图像。在这种情况下,你描述你的内核看起来像这样:字符串
其中内核的中心是(i,j)。
型
7tofc5zh2#
首先,
A
应该是float类型才能正确执行此操作。当计算平均值时,第一行/列根本不会改变,也许应该跳过。对于浮子A,
字符串
所以,
generic_filter(...)[1:, 1:]
可能是您需要的。另一种选择是使用卷积-它更灵活一点,因为您可以自己设置过滤器,但您必须自己创建过滤器。在这种情况下,应跳过最后一行/列
示例如下:
型