Python 我如何根据nan数有条件地更改numpy数组中的值?

Python 我如何根据nan数有条件地更改numpy数组中的值?,python,open-source,numpy,statistics,gdal,Python,Open Source,Numpy,Statistics,Gdal,我的数组是一个二维矩阵,除了负值和正值外,它还有numpy.nan值: >>> array array([[ nan, nan, nan, ..., -0.04891211, nan, nan], [ nan, nan, nan, ..., nan, nan, nan], [

我的数组是一个二维矩阵,除了负值和正值外,它还有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执行该操作

(对于记录,矩阵是geoimage的结果,我想对其进行分类)

尝试:

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

a[a数组中有
np.nan
这一事实应该无关紧要。只需使用花哨的索引:

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

有关花式索引的详细信息以及添加或减去当前值的。

(np.nan不受影响)


数组中有正数,它们只是不显示在预览中。如果有单个转换,则效果会更好,因为如果您的方法(例如,
new\u value\u for\u pos<0
)不起作用。
x[np.isnan(x)] = something_not_nan
import numpy as np

a = np.arange(-10, 10).reshape((4, 5))

print("after -")
print(a)

a[a<0] = a[a<0] - 2
a[a>0] = a[a>0] + 2


print(a)
[[-10  -9  -8  -7  -6]
 [ -5  -4  -3  -2  -1]
 [  0   1   2   3   4]
 [  5   6   7   8   9]]

after -

[[-12 -11 -10  -9  -8]
 [ -7  -6  -5  -4  -3]
 [  0   3   4   5   6]
 [  7   8   9  10  11]]