我有一个numpy对象数组(a),在整个数组的大区域中包含值-99999。
我想将==的值设置为-99999,等于第二个数组(b)的值。
b与a的大小相同,但我无法用它来替换那些值。
答案 0 :(得分:1)
您可以使用np.copyto
来做到这一点:
np.copyto(a, b, where = a==-999999)
样品运行:
>>> a = np.random.choice([0,1,-999999], size=[5, 6], p=[0.15, 0.15, 0.7])
>>> b = np.random.choice([0,1, 2], size=[5, 6], p=[0.3, 0.4, 0.3])
>>> a
array([[-999999, -999999, -999999, 1, 1, -999999],
[ 0, -999999, -999999, -999999, -999999, -999999],
[-999999, 1, -999999, -999999, -999999, 0],
[ 0, -999999, -999999, -999999, -999999, -999999],
[ 0, 1, -999999, -999999, 0, -999999]])
>>> b
array([[1, 1, 2, 2, 2, 0],
[0, 0, 2, 1, 1, 0],
[0, 1, 1, 1, 2, 1],
[1, 1, 2, 0, 0, 0],
[0, 2, 0, 2, 2, 2]])
>>> np.copyto(a, b, where = a==-999999)
>>> a
array([[1, 1, 2, 1, 1, 0],
[0, 0, 2, 1, 1, 0],
[0, 1, 1, 1, 2, 0],
[0, 1, 2, 0, 0, 0],
[0, 1, 0, 2, 0, 2]])
答案 1 :(得分:0)
您也可以这样做。
cond = a==-99999 # define condition
a[cond] = b[cond] # update a with target values of b