【发布时间】:2011-10-05 19:32:29
【问题描述】:
我希望在 numpy 中用 NaN 替换一个数字,并且正在寻找一个类似 numpy.nan_to_num 的函数,但反向除外。
随着处理不同的数组,该数字可能会发生变化,因为每个数组都可以具有唯一定义的 NoDataValue。我见过人们使用字典,但是数组很大并且充满了正负浮点数。我怀疑尝试将所有这些都加载到任何东西中来创建密钥效率不高。
我尝试使用以下和 numpy 要求我使用 any() 或 all()。我意识到我需要明智地迭代元素,但希望内置函数可以实现这一点。
def replaceNoData(scanBlock, NDV):
for n, i in enumerate(array):
if i == NDV:
scanBlock[n] = numpy.nan
NDV 是 GDAL 的无数据值,array 是一个 numpy 数组。
掩码数组是否可行?
【问题讨论】:
-
我不确定我是否理解您提供的解决方案有什么问题。它不能正常工作吗?
-
@Chris Gregg 这个解决方案需要一些缩进,不需要返回数组(因为它是就地的),应该避免使用
array作为变量以避免与np.array混淆,但最重要的是,与典型的 numpy 索引和广播相比,速度会非常慢。 -
@Paul 我关心的是速度,非常感谢下面的回答。我使用变量只是为了使代码更清晰,我也会避免使用数组。
标签: python arrays numpy nan gdal