考虑到 nans,如何有条件地更改 numpy 数组中的值?

新手上路,请多包涵

我的数组是一个二维矩阵,除了负值和正值外,它还有 numpy.nan 值:

 >>> array
array([[        nan,         nan,         nan, ..., -0.04891211,
                nan,         nan],
       [        nan,         nan,         nan, ...,         nan,
                nan,         nan],
       [        nan,         nan,         nan, ...,         nan,
                nan,         nan],
       ...,
       [-0.02510989, -0.02520096, -0.02669156, ...,         nan,
                nan,         nan],
       [-0.02725595, -0.02715945, -0.0286231 , ...,         nan,
                nan,         nan],
       [        nan,         nan,         nan, ...,         nan,
                nan,         nan]], dtype=float32)

(数组中有正数,它们只是不显示在预览中。)

我想用一个数字替换所有正数,用另一个数字替换所有负数。

我如何使用 python/numpy 执行该操作?

(为了记录,矩阵是地理图像的结果,我想对其进行分类)

原文由 user528025 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 739
2 个回答

事实上,你的阵列中有 np.nan 应该无关紧要。只需使用花式索引:

 x[x>0] = new_value_for_pos
x[x<0] = new_value_for_neg

如果你想替换你的 np.nans

 x[np.isnan(x)] = something_not_nan

有关花式索引 教程NumPy 文档 的更多信息。

原文由 Pierre GM 发布,翻译遵循 CC BY-SA 4.0 许可协议

尝试:

 a[a>0] = 1
a[a<0] = -1

原文由 silvado 发布,翻译遵循 CC BY-SA 3.0 许可协议

推荐问题