sigma_clip#

astropy.stats.sigma_clipping.sigma_clip(data, sigma=3, sigma_lower=None, sigma_upper=None, maxiters=5, cenfunc='median', stdfunc='std', axis=None, masked=True, return_bounds=False, copy=True, grow=False)[源代码]#

对提供的数据执行sigma裁剪。

数据将被迭代,每次拒绝小于或大于中心值的指定数量标准偏差的值。

剪裁(拒绝)像素是指:

data < center - (sigma_lower * std)
data > center + (sigma_upper * std)

其中::

center = cenfunc(data [, axis=])
std = stdfunc(data [, axis=])

无效的数据值(即NaN或inf)会自动被剪裁。

有关sigma裁剪的面向对象接口,请参见 SigmaClip .

备注

scipy.stats.sigmaclip 提供此类中的功能子集。此外,它的输入数据不能是掩码数组,并且它不处理包含无效值(即NaN或Inf)的数据。另请注意,它使用平均值作为居中函数。的等效设置 scipy.stats.sigmaclip 是::

sigma_clip(sigma=4., cenfunc='mean', maxiters=None, axis=None,
...        masked=False, return_bounds=True)
参数:
data : array_likeMaskedArrayNumPy:ARRAY_LIKE或Masked数组

要进行西格玛裁剪的数据。

sigma : float ,可选Python:Float,可选

用于剪裁下限和上限的标准差的数目。这些限制被以下各项覆盖 sigma_lowersigma_upper ,如果输入。默认值为3。

sigma_lower : floatNone ,可选PYTHON:FLOAT或PYTHON:无,可选

用作剪裁限制下限的标准差数。如果 None 那么它的价值 sigma 使用的是。缺省值为 None

sigma_upper : floatNone ,可选PYTHON:FLOAT或PYTHON:无,可选

用作剪裁限制上限的标准差数。如果 None 那么它的价值 sigma 使用的是。缺省值为 None

maxiters : intNone ,可选PYTHON:INT或PYTHON:NONE,可选

要执行的最大西格玛修剪迭代次数或 None 进行剪裁,直到达到收敛(即,迭代直到最后一次迭代不剪裁任何内容)。如果在此之前实现收敛 maxiters 迭代,则剪裁迭代将停止。默认值为5。

cenfunc : {'median', 'mean'} or callable() ,可选{‘中位数’,‘平均值’}或

用于计算剪裁中心值的统计或可调用函数/对象。如果使用可调用的函数/对象并且 axis 关键字,则它必须能够忽略NAN(例如, numpy.nanmean )并且它必须有一个 axis 关键字返回删除了轴维的数组。缺省值为 'median'

stdfunc : {'std', 'mad_std'} or callable() ,可选{‘std’,‘MAD_std’}或

用于计算关于中心值的标准偏差的统计或可调用函数/对象。如果使用可调用的函数/对象并且 axis 关键字,则它必须能够忽略NAN(例如, numpy.nanstd )并且它必须有一个 axis 关键字返回删除了轴维的数组。缺省值为 'std'

axis : Noneinttupleint ,可选PYTHON:NONE或PYTHON:INT或PYTHON:PYTHON的元组:INT,可选

要沿着其西格玛剪裁数据的一个或多个轴。如果 None ,则将使用展平的数据。 axis 被传递给 cenfuncstdfunc 。缺省值为 None

masked : bool ,可选可选的布尔

如果 True ,然后是一个 MaskedArray 返回,其中掩码是 True 用于剪裁的值。如果 False ,然后是一个 ndarray 是返回的。缺省值为 True

return_bounds : bool ,可选可选的布尔

如果 True ,则还将返回最小和最大剪裁边界。

copy : bool ,可选可选的布尔

如果 True ,然后是 data 数组将被复制。如果 Falsemasked=True ,则返回的掩码数组数据将包含与输入相同的数组 data (如果 data 是一种 ndarrayMaskedArray )。如果 Falsemasked=False ,则就地修改输入数据。缺省值为 True

grow : floatFalse ,可选Python:Float或False,可选

遮罩超出剪裁限制的相邻像素的半径(仅适用于 axis ,如果指定)。例如,对于2D图像,值为1将在每个偏差像素周围以交叉模式遮罩最近的像素,而1.5也将拒绝最近的对角线邻域,依此类推。

返回:
result : array_likeNumpy:ARRAY_LIKE

如果 masked=True 然后 MaskedArray 返回,掩码所在的位置 True 对于剪裁的值和输入掩码所在的位置 True .

如果 masked=False 然后 ndarray 返回。

如果 return_bounds=True ,则除了上述屏蔽数组或数组外,还返回最小和最大剪裁边界。

如果 masked=Falseaxis=None ,则输出数组是扁平化的1D ndarray 其中剪裁的值已被删除。如果 return_bounds=True 则返回的最小和最大阈值为标量。

如果 masked=Falseaxis 是指定的,则输出 ndarray 将具有与输入相同的形状 data 并包含 np.nan 价值被削减的地方。如果输入 data 是一个掩码数组,然后输出 ndarray 还将包含 np.nan 输入掩码的位置 True 。如果 return_bounds=True 则返回的最小和最大裁剪阈值将为 ndarray s.

笔记

最佳性能通常通过设置 cenfuncstdfunc 指定为字符串的其中一个内置函数。如果其中一个选项设置为字符串,而另一个选项具有自定义可调用对象,则在某些情况下,如果使用 bottleneck 已安装软件包。

实例

此示例使用来自高斯分布的随机变量的数据数组。我们剪裁距离中值超过2个样本标准差的所有点。结果是一个掩码数组,其中掩码是 True 对于剪裁数据::

>>> from astropy.stats import sigma_clip
>>> from numpy.random import randn
>>> randvar = randn(10000)
>>> filtered_data = sigma_clip(randvar, sigma=2, maxiters=5)

此示例剪辑相对于样本大于3西格玛的所有点 mean ,剪辑直到收敛,返回无掩码 ndarray ,并且不复制数据:

>>> from astropy.stats import sigma_clip
>>> from numpy.random import randn
>>> from numpy import mean
>>> randvar = randn(10000)
>>> filtered_data = sigma_clip(randvar, sigma=3, maxiters=None,
...                            cenfunc=mean, masked=False, copy=False)

此示例西格玛沿一个轴夹:

>>> from astropy.stats import sigma_clip
>>> from numpy.random import normal
>>> from numpy import arange, diag, ones
>>> data = arange(5) + normal(0., 0.05, (5, 5)) + diag(ones(5))
>>> filtered_data = sigma_clip(data, sigma=2.3, axis=0)

请注意,沿另一个轴,不会剪裁任何点,因为标准偏差更高。