使用lidar.ExtractSinks()遇np.float报错及NoData值处理问题
解决
AttributeError: module 'numpy' has no attribute 'float'问题(针对lidar包) 猴子补丁方案(推荐,无需修改第三方代码或降级)
在导入lidar包之前,手动给numpy添加兼容的float属性,让第三方包的旧代码能正常运行:
import numpy as np # 为numpy添加已弃用的float别名,指向实际兼容的float64类型 np.float = np.float64 # 之后再导入lidar及其他依赖包 import lidar import rasterio # 你的栅格处理代码 with rasterio.open("你的栅格文件路径.tif") as src: src.nodata = 0 dem = src.read(1) # 调用ExtractSinks函数 sinks = lidar.ExtractSinks(dem, no_data=src.nodata)
原理:高版本numpy移除了np.float这个别名,我们手动将其映射到np.float64(原np.float对应的实际类型),以此兼容第三方包的旧代码逻辑。
降级numpy方案
如果猴子补丁出现兼容性问题,可以选择降级numpy到仍支持np.float的版本:
pip install numpy==1.23.5
注意:降级可能导致其他依赖包出现兼容性问题,需要验证项目整体运行情况。
内容的提问来源于stack exchange,提问作者Max Duso
相关产品推荐
相关产品推荐

