numpy.ma.masked_array()로 만든 마스크 된 배열에서 numpy.median()의 동작과 관련된 질문이 있습니다.마스크 된 배열에서 numpy.median의 예기치 않은 동작
은 내가 내 자신의 코드를 디버깅에서 이해 한 것처럼, numpy.median는()
대답 제공 (문제의 정의 Using numpy.median on a masked array 참조) 마스크 배열에서 예상대로 작동하지 않습니다이었다
설명 : 올바르게 기억하면 np.median은 하위 클래스를 지원하지 않으므로 np.ma.MaskedArray에서 올바르게 작동하지 않습니다.
결론적으로 마스크 된 배열에서 요소의 중앙값을 계산하려면이 배열이 마스크 된 배열에 대한 중간 함수이기 때문에 numpy.ma.median()
을 사용해야합니다.
내 문제는이 문제를 알 수있는 방법이 없기 때문에이 문제를 찾는 데 상당한 시간을 투자했기 때문입니다.
numpy.median()을 통해 마스크 된 배열의 중앙값을 계산할 때 경고 또는 예외가 발생하지 않습니다.
이 함수가 반환하는 대답은 예상 한 내용이 아니므로 사람이이 기능을 인식하지 못하면 심각한 문제가 발생할 수 있습니다.
버그로 간주 될 수있는 사람은 누구입니까?
내 의견으로는 마스크 된 배열에서 numpy.median을 사용하면 예외가 발생하고 일종의 예외가 발생해야합니다.
모든 의견 ???
은 아래의 테스트 스크립트 마스크 배열 에 numpy.median 이용한 불필요한 예기치 않은 동작을 나타낸다 (유효 요소의 정확한 예상 중앙값 2.5주의!)을 :
In [1]: import numpy as np
In [2]: test = np.array([1, 2, 3, 4, 100, 100, 100, 100])
In [3]: valid_elements = np.array([1, 1, 1, 1, 0, 0, 0, 0], dtype=np.bool)
In [4]: testm = np.ma.masked_array(test, ~valid_elements)
In [5]: testm
Out[5]:
masked_array(data = [1 2 3 4 -- -- -- --],
mask = [False False False False True True True True],
fill_value = 999999)
In [6]: np.median(test)
Out[6]: 52.0
In [7]: np.median(test[valid_elements])
Out[7]: 2.5
In [8]: np.median(testm)
Out[8]: 4.0
In [9]: np.ma.median(testm)
Out[9]: 2.5
그래서 'np.median'은 작동하지 않지만'np.ma.median'는 작동합니까? – Eric
일종의 ... 내 불만은 그것이 마스크 된 배열에 적용될 때 np.median이 잘못된 결과를 준다는 어떠한 표시도 (문서에서도 아님) 제공하지 않는다는 것입니다. 나를 위해 개인적으로, 때로는 아주 엉성한,이 잘못된 np.median 값은 발견되지 않을 것입니다. 그러므로, np.median은 작동하지 않지만 np.median은 마스크 된 배열에서 잘못된 결과를 표시하지 않습니다. –
마스크 된 배열에서'np. *'함수가 많이 작동하지 않습니다. 문제는'np. * '함수는 가면 배열이 있는지조차 모르고있다. – Eric