使用同一索引位置的另一个 numpy 数组(从)的值填充 numpy 数组(主)的特定值

Fill specific values of a numpy array (master) with values from another numpy array (slave) from same index position

我为我的问题准备了一个小例子。 假设我们有一个主 numpy 数组

master = 
array([[-1, -1, -1,  2,  2,  2],
       [-1, -1, -1,  2,  2,  2],
       [-1, -1, -1,  2,  2,  2],
       [ 2,  2,  2, -1, -1, -1],
       [ 2,  2,  2, -1, -1, -1],
       [ 2,  2,  2, -1, -1, -1]])

其次,我们有一个形状完全相同的从属 numpy 数组:

slave=
array([[-1, -1, -1,  3,  3,  3],
       [-1, -1, -1,  3,  3,  3],
       [-1, -1, -1,  3,  3,  3],
       [ 3,  3,  3,  3,  3,  3],
       [ 3,  3,  3,  3,  3,  3],
       [ 3,  3,  3,  3,  3,  3]])

我正在寻找的是以下内容: result = fill master array with slave values where master = -1

result=
array([[-1, -1, -1,  2,  2,  2],
       [-1, -1, -1,  2,  2,  2],
       [-1, -1, -1,  2,  2,  2],
       [ 2,  2,  2,  3,  3,  3],
       [ 2,  2,  2,  3,  3,  3],
       [ 2,  2,  2,  3,  3,  3]])

在我的真实场景中,我有几十个数组,每个数组的值都超过 1200 万,并且它们在不同的地方都没有数据值。我想用其他数组填充主数组,其中主值是无数据。

我真的搜索并尝试了很多,比如提取布尔掩码,但我真的不知道如何在不遍历所有单个单元格的情况下填充完全相同的索引坐标。

如果能得到你的帮助就好了...

np.where 可以将数组作为参数因此:

result = np.where(master == -1, slave, master)

使用numpy.where:

result = np.where(master==-1, slave, master)

输出:

array([[-1, -1, -1,  2,  2,  2],
       [-1, -1, -1,  2,  2,  2],
       [-1, -1, -1,  2,  2,  2],
       [ 2,  2,  2,  3,  3,  3],
       [ 2,  2,  2,  3,  3,  3],
       [ 2,  2,  2,  3,  3,  3]])

使用:

result = np.where(master == -1, slave, master)