为什么numpy angle函数也为掩码数组值返回值

kat*_*ikj 5 python numpy

如果您尝试以下代码段

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)
Run Code Online (Sandbox Code Playgroud)

相位阵列不会被屏蔽.angle函数将返回整个数组的值,即使对于屏蔽的值也是如此.我在这里做错了什么或这是应该的方式?如果是这样,为什么?

mat*_*fee 3

快速浏览了 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 以获得度数),因此您可以使用它。