マスクされていないすべての要素のインデックスを取得する方法は? 以下は、私が苦労している例です。2 つの同じサイズの numpy 配列 x と m があります。ここで、マスクされていない値の値とインデックスの両方を抽出するために、配列 m を x のマスクとして使用したいと考えています。いくつかのコードがよりよく説明すると思います
numpy 配列 x & m
>>> x = np.array([[3,5,9],[6,0,7],[2,3,4]])
>>> x
array([[3, 5, 9],
[6, 0, 7],
[2, 3, 4]])
>>> m = np.array([[1,1,2],[2,1,1],[2,1,2]])
>>> m
array([[1, 1, 2],
[2, 1, 1],
[2, 1, 2]])
ここで、m が 1 に等しい x の値を抽出したいと思います。
>>> mo = ma.array(m,mask=(m<>1))
>>> mo
masked_array(data =
[[1 1 --]
[-- 1 1]
[-- 1 --]],
mask =
[[False False True]
[ True False False]
[ True False True]],
fill_value = 999999)
>>> xm = ma.masked_array(x,mask=mo.mask, dtype=int)
>>> xm
masked_array(data =
[[3 5 --]
[-- 0 7]
[-- 3 --]],
mask =
[[False False True]
[ True False False]
[ True False True]],
fill_value = 999999)
mask が False である値のインデックスが必要です。ma ライブラリの非ゼロ関数を使用できるようになりましたが、配列にもゼロ値が含まれています。ご覧のとおり、値[1,1]
がありません。
>>> xmindex = np.transpose(ma.MaskedArray.nonzero(xm))
>>> xmindex
array([[0, 0],
[0, 1],
[1, 2],
[2, 1]])
つまり、ゼロ以外の値だけでなく、マスクされていないすべての要素のインデックスを取得する方法は?