Почему функция угла наклона возвращает значения также для значений массива - PullRequest
5 голосов
/ 01 декабря 2011

Если вы попробуете следующий сегмент кода

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)

Фазовый массив не будет замаскирован.Функция угла будет возвращать значения для всего массива, даже для скрытых значений.Я что-то здесь не так делаю или так и должно быть?Если так, то почему?

1 Ответ

3 голосов
/ 02 декабря 2011

Быстро взглянул на numpy источник, и это может быть ошибка / еще не реализована.

Он указан как "отсутствующая функция (работа в процессе)" на странице numpy.ma, проблема# 1: http://projects.scipy.org/numpy/wiki/MaskedArray.

Проблема заключается в том, что ряд унарных функций, таких как np.angle, np.quantile, вызывают [np.]asarray в источнике, который удаляет маску.

Как объясняют разработчики на странице, на которую я ссылался, если бы эти функции использовали ma.asarray вместо np.asarray, они бы работали, но они этого не делают: (.

Я думаю, это патч, который еще предстоитбыть представленным?

В качестве временного обходного пути, np.angle в основном вызывает np.arctan2(a.imag,a.real) (возможно, умножение на 180 / pi для получения градусов), так что вы можете использовать это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...