如果您尝试以下代码段

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)

相阵列将不会被屏蔽。角度函数将返回整个数组的值,即使是被 mask 的值也将返回。我在这里做错什么了吗?还是应该这样?如果是这样,为什么?

最佳答案

快速浏览了numpy的源代码,这可能是一个错误/尚未实现。

在numpy.ma页面上,该问题被列为“缺少的功能(正在进行的工作)”,问题#1:http://projects.scipy.org/numpy/wiki/MaskedArray

问题在于,许多一元函数(例如np.anglenp.quantile)在源代码中调用了[np.]asarray,这会屏蔽掉掩码。

正如开发人员在我链接到的页面中所解释的那样,如果这些函数使用ma.asarray而不是np.asarray,它们将起作用,但它们::不起作用。

我想这是一个尚未提交的补丁?

作为一种临时的解决方法,np.angle基本上调用np.arctan2(a.imag,a.real)(可选地乘以180/pi来获得度),因此您可以使用它。

关于python - 为什么numpy angle函数也返回掩码数组值的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8346457/

10-12 00:27
查看更多