私は自分の仕事で常にマスク配列を使用していましたが、マスク配列の初期化が少しぎこちないという問題が 1 つあります。具体的には、ma.zeros() と ma.empty()は、配列の次元と一致しないマスクを持つマスクされた配列を返します。これが必要な理由は、配列の特定の要素に割り当てない場合、デフォルトでマスクされるようにするためです。
In [4]: A=ma.zeros((3,))
...
masked_array(data = [ 0. 0. 0.],
mask = False,
fill_value = 1e+20)
その後、マスクを割り当てることができます。
In [6]: A.mask=ones((3,))
...
masked_array(data = [-- -- --],
mask = [ True True True],
fill_value = 1e+20)
しかし、初期化と配列のために 2 行を使用する必要があるのはなぜですか? あるいは、ma.zeros() 機能を無視して、マスクとデータを 1 行で指定することもできます。
In [8]: A=ma.masked_array(zeros((3,)),mask=ones((3,)))
...
masked_array(data = [-- -- --],
mask = [ True True True],
fill_value = 1e+20)
でも、これもむずかしいと思います。ドキュメントをnumpy.ma
調べましたが、これをうまく処理する方法が見つかりません。明らかな何かを見逃しましたか?