6
我知道如何創建一個屏蔽數組,我想用掩蔽在記錄陣列,這樣我可以使用命名屬性訪問這些數據。掩蔽似乎「丟失」當我創建一個蒙面陣列的記錄陣列:我怎麼能掩蓋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)
我該怎麼辦?記錄數組是否不支持掩蔽?瀏覽網頁我已經看到一些代碼示例,但似乎並不清楚。希望我能在這裏得到一個很好的答案。
謝謝,我不知道numpy.ma.mrecords。 –
我不假設有一種方法來掩蓋個別字段?我的使用情況是添加一個名爲「100天高」(或類似的東西)一個新的衍生領域,所以我會想掩蓋這一領域的前100條記錄。 –
@Nate Reed:我認爲這是可能的。你試過類似'data.mask ['price'] [data ['date'] <...] = True'嗎? – unutbu