sigma_clip#
- astropy.stats.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_like 或
MaskedArray
NumPy:ARRAY_LIKE或Masked数组 要进行西格玛裁剪的数据。
- sigma :
float
,可选Python:Float,可选 用于剪裁下限和上限的标准差的数目。这些限制被以下各项覆盖
sigma_lower
和sigma_upper
,如果输入。默认值为3。- sigma_lower :
float
或None
,可选PYTHON:FLOAT或PYTHON:无,可选 - sigma_upper :
float
或None
,可选PYTHON:FLOAT或PYTHON:无,可选 - maxiters :
int
或None
,可选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 :
None
或int
或tuple
的int
,可选PYTHON:NONE或PYTHON:INT或PYTHON:PYTHON的元组:INT,可选 要沿着其西格玛剪裁数据的一个或多个轴。如果
None
,则将使用展平的数据。axis
被传递给cenfunc
和stdfunc
。缺省值为None
。- masked : bool ,可选可选的布尔
如果
True
,然后是一个MaskedArray
返回,其中掩码是True
用于剪裁的值。如果False
,然后是一个ndarray
是返回的。缺省值为True
。- return_bounds : bool ,可选可选的布尔
如果
True
,则还将返回最小和最大剪裁边界。- copy : bool ,可选可选的布尔
如果
True
,然后是data
数组将被复制。如果False
和masked=True
,则返回的掩码数组数据将包含与输入相同的数组data
(如果data
是一种ndarray
或MaskedArray
)。如果False
和masked=False
,则就地修改输入数据。缺省值为True
。- grow :
float
或False
,可选Python:Float或False,可选 遮罩超出剪裁限制的相邻像素的半径(仅适用于
axis
,如果指定)。例如,对于2D图像,值为1将在每个偏差像素周围以交叉模式遮罩最近的像素,而1.5也将拒绝最近的对角线邻域,依此类推。
- data : array_like 或
- 返回:
- result : array_likeNumpy:ARRAY_LIKE
如果
masked=True
然后MaskedArray
返回,掩码所在的位置True
对于剪裁的值和输入掩码所在的位置True
.如果
masked=False
然后ndarray
返回。如果
return_bounds=True
,则除了上述屏蔽数组或数组外,还返回最小和最大剪裁边界。如果
masked=False
和axis=None
,则输出数组是扁平化的1Dndarray
其中剪裁的值已被删除。如果return_bounds=True
则返回的最小和最大阈值为标量。如果
masked=False
和axis
是指定的,则输出ndarray
将具有与输入相同的形状data
并包含np.nan
价值被削减的地方。如果输入data
是一个掩码数组,然后输出ndarray
还将包含np.nan
输入掩码的位置True
。如果return_bounds=True
则返回的最小和最大裁剪阈值将为ndarray
s.
笔记
最佳性能通常通过设置
cenfunc
和stdfunc
指定为字符串的其中一个内置函数。如果其中一个选项设置为字符串,而另一个选项具有自定义可调用对象,则在某些情况下,如果使用 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)
请注意,沿另一个轴,不会剪裁任何点,因为标准偏差更高。