2011-12-01 11 views
5

Jeśli spróbujesz następujące segment koduDlaczego NumPy wartości zwracanej przez funkcję kąt również dla zamaskowanego tablicy wartości

import numpy as np 
import numpy.ma as ma 

a = np.random.random(100) + 1j*np.random.random(100) 
mask = np.ones_like(a, dtype='bool') 
mask[0:9] = False 
a = ma.masked_array(a, mask) 
phase = np.angle(a) 

Tablica faza nie zostanie zamaskowany. Funkcja kąta zwróci wartości dla całej tablicy, nawet dla zamaskowanych wartości. Czy robię coś złego tutaj, czy jest tak, jak powinno być? Jeśli tak, dlaczego?

Odpowiedz

3

Rzuciłem okiem na numpy źródło i może to być błąd/jeszcze nie zaimplementowany.

Jest wymieniony jako "brakująca funkcja (w toku)" na stronie numpy.ma, numer 1: http://projects.scipy.org/numpy/wiki/MaskedArray.

Problem polega na tym, że pewna liczba jednorzędowych funkcji, takich jak np.angle, np.quantile, wywołuje w źródle [np.]asarray, co powoduje usunięcie maski.

Jak deweloperów wyjaśnić na stronie I powiązana, jeśli te funkcje wykorzystywane ma.asarray zamiast np.asarray oni pracują, ale nie :(.

Chyba jest to łatka jeszcze zostać przedłożone ?

jako tymczasowe obejście, np.angle zasadzie nazywa np.arctan2(a.imag,a.real) (opcjonalnie mnożąc przez 180/PI dostać stopni), więc można użyć.

Powiązane problemy