ドキュメントに示されている例では、ma.mean
両方ともスカラーを返します
In [1217]: b = np.ma.array([1,2,3], mask=[False, False, True])
In [1218]: b.mean()
Out[1218]: 1.5
In [1219]: b.sum()
Out[1219]: 3
mask がFalse
配列ではなく scalar であるという点で、ケースは異なります。
In [1220]: a=np.ma.array([1,2,3])
In [1221]: a
Out[1221]:
masked_array(data = [1 2 3],
mask = False,
fill_value = 999999)
In [1222]: a.mean()
Out[1222]:
masked_array(data = 2.0,
mask = False,
fill_value = 999999)
In [1223]: a.sum()
Out[1223]: 6
それは本当に違いを生むべきではありません。これについての議論を見たのを漠然と思い出します。それが別の SO にあったのか、バグの問題だったのかは覚えていません。また、修正された可能性もあります。いくつか検索する必要があります。私の派手なバージョンは「1.11.0」です
問題は、 masked の開始位置にある行ですmean
。
if self._mask is nomask:
result = super(MaskedArray, self).mean(axis=axis, dtype=dtype)
nomask
スカラーFalse
です。したがって、あなたのa
場合、そのマスクで特別なことをすることなく、通常のnumpy meanを実行しようとします。しかし、それは入力と同じサブクラスの結果を返そうとします。
マスクを配列に変更a
すると、問題が「修正」されます。
In [1247]: a.mask=[False,False,False]
==============
OK、複製はサイドバーに隠れていました
numpy.ma (マスクされた) 配列の平均メソッドの戻り値の型に一貫性がない
昨年 7 月にバグの問題を見つけましたが、パッチはありません。