使用Scipy ndimage.label()处理布尔数组时出现“No matching signature found”错误
TypeError: No matching signature found 错误原因及解决方法
错误原因
scipy.ndimage.label() 函数要求输入数组为数值型 dtype(比如原生bool、int、float类型),但你的dry_bool数组是object dtype——哪怕数组内存储的是布尔值,object类型会让函数无法识别有效数值特征,直接触发签名不匹配的错误。
解决方法
1. 转换数组为原生布尔类型
先将object类型数组转换成numpy原生布尔型数组,执行代码:
dry_bool = dry_bool.astype(bool)
可通过print(dry_bool.dtype)验证,输出应为bool,确认转换成功。
2. 重新调用label函数
转换完成后,执行原代码即可正常标记连续干旱日时段:
import scipy.ndimage as ndimage events, n_events = ndimage.label(dry_bool)
此时events会输出标记了不同连续区域的数组,n_events即为连续干旱日时段的总数量。
内容的提问来源于stack exchange,提问作者claradenken
相关产品推荐
相关产品推荐

