You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ndimage.maximum_filter未按预期输出:首元素应为np.inf却得到0

问题原因及解决方法

你的问题出在图像数组的类型与填充值np.inf的类型不匹配:

你创建的image是默认的整数类型(如int64),而np.inf属于浮点数类型。当ndimage.maximum_filter用cval=np.inf填充边界时,numpy会强制将浮点数的inf转换为整数类型——但整数无法表示无穷大,最终会被转为0。这就导致第一个位置计算最大值时,参与比较的是转换后的0和原数组索引1的0,结果自然是0而非预期的inf。

修正代码

只需将图像数组转换为浮点数类型即可:

import numpy as np
from scipy import ndimage

# 显式指定数组为浮点数类型
image = np.array([1,0,6,1,8,9,6,4], dtype=np.float64)    

neigh = np.array([1,0,1])  # 建议转为numpy数组,避免潜在类型问题

filtered_image = ndimage.maximum_filter(image, footprint=neigh, mode='constant', cval=np.inf)
print(f"filtered_image: {filtered_image}")

修正后结果

运行上述代码会得到符合预期的输出:

filtered_image: [inf 6. 1. 8. 9. 8. 9. 6.]

内容的提问来源于stack exchange,提问作者Boubaker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 20:00:58