用另一个数组替换np数组中的值

时间:2020-10-06 22:57:40

标签: python numpy

我有一个numpy对象数组(a),在整个数组的大区域中包含值-99999。

我想将==的值设置为-99999,等于第二个数组(b)的值。

b与a的大小相同,但我无法用它来替换那些值。

2 个答案:

答案 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