我的数组是一个二维矩阵,除了负数和正数之外,还有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)
我想用一个数字替换所有的正数,用另一个数字替换所有的负数。
我如何使用pythonnumpy来执行?
(声明一下,这个矩阵是geoimage的结果,我想对其进行分类)
试试。
a[a>0] = 1
a[a<0] = -1
对当前值进行加减,然后(np.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]]