我怎么能掩盖numpy的记录数组的元素?
问题描述:
我知道如何创建一个屏蔽数组,我想用掩蔽在记录阵列,这样我可以使用命名属性访问这些数据。掩蔽似乎“丢失”当我创建一个蒙面阵列的记录阵列:我怎么能掩盖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.MaskedRecords多文档,除了简单地提到here。你可以通过研究numpy的单元测试来找到一些关于如何使用它的例子。 (例如 /usr/lib/python2.6/dist-packages/numpy/ma/tests/test_mrecords.py
)。
import numpy as np
import numpy.ma.mrecords as mrecords
data = np.ma.array(
np.ma.zeros(30, dtype=[('date', '|O4'), ('price', '<f8')]),
mask=[i<10 for i in range(30)])
r = data.view(mrecords.mrecarray)
print(r.date[0])
# --
谢谢,我不知道numpy.ma.mrecords。 –
我不假设有一种方法来掩盖个别字段?我的使用情况是添加一个名为“100天高”(或类似的东西)一个新的衍生领域,所以我会想掩盖这一领域的前100条记录。 –
@Nate Reed:我认为这是可能的。你试过类似'data.mask ['price'] [data ['date'] <... true class="text-secondary"> unutbu