10

マスクされた配列の場合のnumpy.medianの出力について少し混乱しています。これは簡単な例です(numpyがインポートされていると仮定します-私はバージョン1.6.2を持っています):

>>> a = [3.0, 4.0, 5.0, 6.0, numpy.nan]
>>> am = numpy.ma.masked_array(a, [numpy.isnan(x) for x in a])

nan中央値を計算するときに、マスクされた配列を使用して配列内の値を無視できるようにしたいと思います。これは、マスクされた配列のいずれかnumpy.meanまたは方法を使用することを意味します。mean()

>>> numpy.mean(a)
nan
>>> numpy.mean(am)
4.5
>>> am.mean()
4.5

ただし、中央値については、次のようになります。

>>> numpy.median(am)
5.0

しかし、私はこの結果のようなものを期待しています:

>>> numpy.median([x for x in a if not numpy.isnan(x)])
4.5

残念ながら、aにはメソッドmasked_arrayがありませんmedian

4

1 に答える 1

15

で使用np.ma.medianMaskedArrayます。

[説明:私が正しく覚えている場合、np.medianはサブクラスをサポートしていないため、で正しく機能しませんnp.ma.MaskedArray]

于 2012-09-11T14:57:25.373 に答える