2

マスクされた配列のデータを変更するとき、次のような動作を期待していませんでした。[] オペランドを使用して一部の値を変更できるようですが、すべてではないようです。ただし、データ属性にアクセスすると、すべてを変更できます。これは、タプル内のセルのマスクに True 値がある場合にのみ発生します (マスクされた配列に関連するすべての操作が適切に機能しているように見えます)。

誰も理由を説明できますか?

>>> import numpy as np
>>> import numpy.ma as ma
>>> arr = ma.ones(nrows, dtype=[('c1', np.int),('c2', np.int)])
>>> arr.mask[1][0] = True
>>> arr[1][1] = 3
>>> arr[0][0] = 4
>>> arr
masked_array(data = [(4, 1) (--, 1) (1, 1)],
         mask = [(False, False) (True, False) (False, False)],
   fill_value = (999999, 999999),
        dtype = [('c1', '<i8'), ('c2', '<i8')])

>>> arr.data[1][1]=5
>>> arr
masked_array(data = [(4, 1) (--, 5) (1, 1)],
         mask = [(False, False) (True, False) (False, False)],
   fill_value = (999999, 999999),
        dtype = [('c1', '<i8'), ('c2', '<i8')])
4

2 に答える 2