2017-01-05 19 views
1

私は1つの3D配列、すなわちparam持っている:2次元配列の間隔外のマスク?

私が試してみました何
bot.shape = (50, 50) 
top.shape = (50, 50) 

:私は2つの2D配列、bottopすなわち、1つの区間の外にその第一の軸をマスクする

param.shape = (20, 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) 

しかし、私は次のエラーを得た:ある

if v2 < v1:
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

は実際に、私はbottop値の間にあるparamの値を抽出したいです。あなたがマスクを自分で構築することができ

答えて

0

output = np.ma.array(param, (param < bot_n) & (param > top_n)) 
0

masked_outsideのコードは非常に簡単です:

if v2 < v1: 
    (v1, v2) = (v2, v1) 
xf = filled(x) 
condition = (xf < v1) | (xf > v2) 
return masked_where(condition, x, copy=copy) 

condition1式はあなたの配列bot_n、だけで動作しますif v2<v1テストで動作するはずですスカラー限界。関数の作者は単純な[3, 9]の間隔を考えていましたが、もっと一般的な2次元のものではありません。

はい、あなた自身のマスクを書いてください。