我的数据是几个长度相同的数据数组。我正在屏蔽一个数组(y),然后使用该屏蔽数组来屏蔽第二个数组(x)。我屏蔽 x 以消除指示设备错误 (-9999) 的值。然后我使用 np.where() 找出 y 低的位置(低于平均值 1 个标准偏差)来掩盖 x,以便在 y 低时查看 x 的值。
我已经尝试多次更改我的掩码,但其他 numpy 掩码数组操作都没有给我不同的结果。当掩码 = FALSE 时,我尝试编写一个逻辑语句来给我值,但我不能在 np.where() 语句中这样做。
x = np.array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] )
y = np.array( [ 0, 1, -9999, 3, 4, 5, 6, 7, 8, -9999, 10 ] )
x = np.ma.masked_values( x, -9999 )
y = np.ma.masked_values( y, -9999 )
low_y = ( y.mean() - np.std( y ) )
x_masked = x[ np.where( y < low_y ) ]
当我们调用 x_masked 时,它返回:
>>>x_masked
masked_array(data=[0, 1, 2, 9],
mask=False,
fill_value=-9999)
我们期望 x_masked 的平均值为 0.5( (0 + 1)/2 ),但平均值为 3,因为 x_masked 中包含了掩码的 -9999 值(2 和 9)。
有没有办法排除屏蔽值以便只获取未屏蔽值?