마스크 된 배열을 만드는 방법을 이해했으며 명명 된 특성을 사용하여이 데이터에 액세스 할 수 있도록 레코드 배열에서 마스킹을 사용하고 싶습니다. 마스킹 내가 마스크 배열에서 레코드 배열을 만들 때 "손실"될 것 같다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-day-high"(또는 비슷한 것)라는 새로운 파생 필드를 추가하는 것이므로 처음 100 개의 레코드에 대해이 필드를 가리고 싶다. –
@Nate Reed : 가능하다고 생각합니다. 'data '[price]] [data ['date '] <...] = True'와 같은 것을 시도 했습니까? – unutbu