运行库示例时报错:TypeError: 'numpy.float64' object cannot be interpreted as an integer
错误根因
TypeError: 'numpy.float64' object cannot be interpreted as an integer 报错的核心原因是:代码中把numpy.float64类型的数值传入了要求必须为整数的参数位置,Python不会对numpy浮点类型做自动隐式的整数转换,因此直接抛出类型错误。
常见触发场景
- 对数组做索引、切片操作时,使用了numpy.float64类型的索引值
- 调用
range()、np.arange()、列表resize这类要求入参为整数的方法/函数时,传入了numpy.float64类型的数值 - 调用第三方库API时,传入的整数参数是计算得到的numpy.float64类型结果
解决方案
你可以根据你的场景选择对应处理方式:
- 单个数值的场景:显式转换为Python内置int类型即可,例如
int(your_float64_val),注意带小数的浮点值转int会默认向下取整 - 数组批量处理的场景:用numpy自带的类型转换方法统一处理,例如
your_float_array.astype(np.int32) - 如果要保留取整规则,可先调用
np.round()(四舍五入)、np.floor()(向下取整)、np.ceil()(向上取整)处理后,再转整数类型
代码示例
错误写法:
import numpy as np test_arr = np.array([1,2,3,4]) idx = np.float64(2.0) print(test_arr[idx]) # 此处传入float64类型的索引触发报错
修正写法:
import numpy as np test_arr = np.array([1,2,3,4]) idx = np.float64(2.0) print(test_arr[int(idx)]) # 显式转int后正常运行
内容的提问来源于stack exchange,提问作者Bil al
相关产品推荐
相关产品推荐

