我在这方面花了很多时间,而且我知道如何通过对边界行/列进行切片和索引来手动执行此操作,但是 SciPy 必须有一种更简单的方法。
我需要将CVAL
(在 时填充超过边缘的值mode=constant
)设置为 NaN,但是,这将返回 NaN。
我将用代码和数字来解释它:
import numpy as np
from scipy import ndimage
m = np.reshape(np.arange(0,100),(10,10)).astype(np.float)
使用 SciPy ndimage 统一滤波器使用 3x3 内核计算平均值:
filter = ndimage.uniform_filter(m, size=3, mode='constant')
print(filter[1][1]) # equal to 11
print(filter[9][9]) # I need 93.5, however it gets 41.55 due to zeros
如您所见,第一个值为 11,这与预期的一样,但是,对于沿边界的任何单元格,它将用零填充值(我也尝试了所有其他模式)。
这是我需要实现的(左)vsmode=constant
和CVAL=0
(默认0)