マスクされた配列を作成する方法を理解しています。名前付き属性を使用してこのデータにアクセスできるように、レコード配列でマスクを使用したいと思います。マスキングは私がマスクされた配列からレコードの配列を作成するときに「失われた」しているように見える:Numpyでレコード配列の要素をマスクする方法はありますか?
>>> data = np.ma.array(np.ma.zeros(30, dtype=[('date', '|O4'), ('price', '<f8')]),mask=[i<10 for i in range(30)])
>>> data
masked_array(data = [(--, --) (--, --) (--, --) (--, --) (--, --) (--, --) (--, --) (--, --)
(--, --) (--, --) (0, 0.0) (0, 0.0) (0, 0.0) (0, 0.0) (0, 0.0) (0, 0.0) (0, 0.0) (0, 0.0) (0, 0.0) (0, 0.0) (0, 0.0) (0, 0.0) (0, 0.0) (0, 0.0)
(0, 0.0) (0, 0.0) (0, 0.0) (0, 0.0) (0, 0.0) (0, 0.0)],
mask = [(True, True) (True, True) (True, True) (True, True) (True, True)
(True, True) (True, True) (True, True) (True, True) (True, True)
(False, False) (False, False) (False, False) (False, False) (False, False)
(False, False) (False, False) (False, False) (False, False) (False, False)
(False, False) (False, False) (False, False) (False, False) (False, False)
(False, False) (False, False) (False, False) (False, False) (False, False)],
fill_value = ('?', 1e+20),
dtype = [('date', '|O4'), ('price', '<f8')])
>>> r = data.view(np.recarray)
>>> r
rec.array([(0, 0.0), (0, 0.0), (0, 0.0), (0, 0.0), (0, 0.0), (0, 0.0),
(0, 0.0), (0, 0.0), (0, 0.0), (0, 0.0), (0, 0.0), (0, 0.0),
(0, 0.0), (0, 0.0), (0, 0.0), (0, 0.0), (0, 0.0), (0, 0.0),
(0, 0.0), (0, 0.0), (0, 0.0), (0, 0.0), (0, 0.0), (0, 0.0),
(0, 0.0), (0, 0.0), (0, 0.0), (0, 0.0), (0, 0.0), (0, 0.0)],
dtype=[('date', '|O4'), ('price', '<f8')])
私はデータがマスクされていないレコードをアクセスすると:元の配列とは異なり
>>> r.date[0]
0
を:
>>> data['date'][0]
masked_array(data = --,
mask = True,
fill_value = 1e+20)
fill_value = 1e+20)
どうすればよいですか?レコード配列はマスキングをサポートしていませんか? Web上でのブラウジング他に示唆しているようなコード例をいくつか見てきましたが、あまり明確ではありませんでした。私はここで良い答えを得ることができます願っています。
ありがとう、私はnumpy.ma.mrecordsについて知らなかった。 –
個々のフィールドをマスクする方法はないと思いますか?私のユースケースは、 "100日ハイ"(または類似のもの)と呼ばれる新しい派生フィールドを追加することです。最初の100レコードのこのフィールドをマスクする必要があります。 –
@Nate Reed:可能だと思います。 'data '[price'] [data ['date'] <...] = True'のようなものを試しましたか? – unutbu