1

派手なマスク配列の動作を理解するのに苦労しています。

これは、2 つの理由で私を困惑させるスニペットです。

arr = numpy.ma.array([(1,2),(3,4)],dtype=[("toto","int"),("titi","int")])
arr[0][0] = numpy.ma.masked
  1. これを行っても何も起こらず、要素にマスクは適用されません[0][0]
  2. データを[[1,2],[3,4]](の代わりに[(1,2),(3,4)]) に変更すると、次のエラーが発生します。 TypeError: expected a readable buffer object

マスクされた配列のセットアップ (および使用) 方法を完全に誤解しているようです。

このコードの何が問題なのか教えていただけますか?

ありがとう

編集: dtypes を指定しなくても、期待どおりに動作します

4

1 に答える 1

1

マスクされた配列の目的は、操作に対して、配列の一部の要素が使用できない、つまりマスクされていることを伝えることです。

たとえば、次の配列があります。

a = np.array([[2, 1000], [3, 1000]])

そして、要素の操作を無視したいとします>100。次のようなマスクされた配列を作成します。

b = np.ma.array(a, mask=(a>100))

両方の配列でいくつかの操作を実行して、違いを確認できます。

a.sum()
# 2005
b.sum()
# 5

a.prod()
# 6000000
b.prod()
# 6

ご覧のとおり、マスクされたアイテムは無視されます...

于 2013-10-30T18:29:42.693 に答える