Numpy 1.26.4指定casting参数无效,始终使用'safe'规则的问题
Numpy 1.26.4中
isnan/isinf的casting参数无效问题解析 核心原因
np.isnan和np.isinf这类数值判断的ufunc,在传入字符串类型输入时,你指定的casting参数根本没生效,错误信息里的safe是Numpy内部 fallback 的默认规则,和你传的参数无关。
具体细节
- 这类ufunc是专为数值类型(float、int等)设计的,字符串不属于它们的支持类型范畴。当你传入字符串时,Numpy会先尝试做类型转换,但它的安全转换逻辑不允许把字符串隐式转成数值——安全转换要求转换是无损且明确的,字符串到数值显然不符合这个要求。
- 当输入类型完全不在ufunc的支持列表里时,Numpy会直接触发类型不匹配错误,此时你传入的
casting参数会被忽略,错误信息里只会显示内部默认的safe规则。
解决办法
如果要判断字符串形式的特殊数值,得先把字符串转成数值类型再调用方法,或者直接用字符串判断:
# 方式1:先转换为数值类型 np.isnan(np.float64('nan')) # 返回True np.isinf(np.float64('+inf')) # 返回True # 方式2:直接做字符串匹配 'string_content' == 'nan'
内容的提问来源于stack exchange,提问作者noob overflow
相关产品推荐
相关产品推荐

