Python 遮罩在两个2D阵列的间隔之外?
我有一个3D阵列,即Python 遮罩在两个2D阵列的间隔之外?,python,numpy,mask,Python,Numpy,Mask,我有一个3D阵列,即param: param.shape = (20, 50, 50) 我想在一个间隔之外屏蔽它的第一个轴,即两个2D数组,bot和top: bot.shape = (50, 50) top.shape = (50, 50) 我尝试的是: bot_n = np.broadcast_to(bot[0, :, :], param.shape) top_n = np.broadcast_to(top[0, :, :], param.shape) output = np.ma.ma
param
:
param.shape = (20, 50, 50)
我想在一个间隔之外屏蔽它的第一个轴,即两个2D数组,bot
和top
:
bot.shape = (50, 50)
top.shape = (50, 50)
我尝试的是:
bot_n = np.broadcast_to(bot[0, :, :], param.shape)
top_n = np.broadcast_to(top[0, :, :], param.shape)
output = np.ma.masked_outside(param, bot_n, top_n)
但我得到了以下错误:
如果v2事实上,我想提取
param
的值,该值介于bot
和top
值之间。您可以自己构造掩码:
output = np.ma.array(param, (param < bot_n) & (param > top_n))
output=np.ma.array(param,(paramtop_n))
您可以自己构造遮罩:
output = np.ma.array(param, (param < bot_n) & (param > top_n))
output=np.ma.array(param,(paramtop_n))
外部屏蔽的代码非常简单:
if v2 < v1:
(v1, v2) = (v2, v1)
xf = filled(x)
condition = (xf < v1) | (xf > v2)
return masked_where(condition, x, copy=copy)
如果v2v2)
返回掩码_,其中(条件,x,copy=copy)
condition1
表达式应该适用于数组bot\u n
,但是如果v2则屏蔽外部的代码非常简单:
if v2 < v1:
(v1, v2) = (v2, v1)
xf = filled(x)
condition = (xf < v1) | (xf > v2)
return masked_where(condition, x, copy=copy)
如果v2v2)
返回掩码_,其中(条件,x,copy=copy)
condition1
表达式应该适用于数组bot\n
,但是如果v2