切口2D#

class astropy.nddata.utils.Cutout2D(data, position, size, wcs=None, mode='trim', fill_value=nan, copy=False)[源代码]#

基类:object

从二维阵列创建剪切对象。

返回的对象将包含一个二维剪切数组。如果 copy=False (默认),剪切阵列是原始阵列的视图 data 数组,否则剪切数组将包含原始数据的副本。

如果A WCS 对象,则返回的对象也将包含原始WCS的副本,但已为cutout数组更新。

有关用法,请参见 二维剪切图像

警告

cutout WCS对象当前不处理输入WCS对象包含中描述的失真查找表的情况 FITS WCS distortion paper .

参数:
data : ndarray恩达雷

从中提取剪切数组的二维数据数组。

position : tupleSkyCoordPython:元组或SkyCoord

剪切阵列的中心相对于 data 数组。位置可以指定为 (x, y) 像素坐标元组或 SkyCoord ,在这种情况下 wcs 是必需的输入。

size : intarray_like ,或 QuantityPYTHON:INT、NUMPY:ARRAY_LIKE或QUANTITY

沿每个轴的裁切数组的大小。如果 size 是标量数还是标量 Quantity ,然后是一个方形的裁剪 size 将被创建。如果 size 有两个元素,它们应该在 (ny, nx) 秩序。中的标量数 size 被假定为以像素为单位。 size 也可以是 Quantity 对象或包含 Quantity 物体。是这样的 Quantity 对象必须以像素或角度为单位。在所有情况下, size 将转换为整数个像素,四舍五入最接近的整数。请参阅 mode 关键字,以获取有关最终裁切大小的其他详细信息。

备注

如果 size 如果是以角度单位表示的,则使用沿图像每个轴的像素比例将裁切尺寸转换为像素 CRPIX 位置。不考虑投影和其他非线性失真。

wcsWCS 可选WCS,可选

与输入关联的WCS对象 data 数组。如果 wcs 不是 None ,则返回的cutout对象将包含cutout数据数组的更新WCS的副本。

mode{'trim','partial','strict'},可选

用于创建剪切数据数组的模式。对于 'partial''trim' 模式,剪切阵列和输入的部分重叠 data 数组就足够了。对于 'strict' 模式下,剪切数组必须完全包含在 data 数组,否则 PartialOverlapError 提高了。在所有模式下,非重叠数组将引发 NoOverlapError . 在 'partial' 模式,剪切阵列中与 data 数组将被填充 fill_value . 在 'trim' 模式仅返回重叠元素,因此结果的截断数组可能小于请求的 shape .

fill_value : floatint ,可选PYTHON:FLOAT或PYTHON:INT,可选

如果 mode='partial' ,用于填充剪切数组中与输入不重叠的像素的值 data . fill_value 必须有相同的 dtype 作为输入 data 数组。

copy : bool ,可选可选的布尔

如果 False (默认),则剪切数据将成为原始视图的视图 data 数组。如果 True ,则剪切数据将保存原始数据的副本 data 数组。

实例

>>> import numpy as np
>>> from astropy.nddata.utils import Cutout2D
>>> from astropy import units as u
>>> data = np.arange(20.).reshape(5, 4)
>>> cutout1 = Cutout2D(data, (2, 2), (3, 3))
>>> print(cutout1.data)  
[[ 5.  6.  7.]
 [ 9. 10. 11.]
 [13. 14. 15.]]
>>> print(cutout1.center_original)
(2.0, 2.0)
>>> print(cutout1.center_cutout)
(1.0, 1.0)
>>> print(cutout1.origin_original)
(1, 1)
>>> cutout2 = Cutout2D(data, (2, 2), 3)
>>> print(cutout2.data)  
[[ 5.  6.  7.]
 [ 9. 10. 11.]
 [13. 14. 15.]]
>>> size = u.Quantity([3, 3], u.pixel)
>>> cutout3 = Cutout2D(data, (0, 0), size)
>>> print(cutout3.data)  
[[0. 1.]
 [4. 5.]]
>>> cutout4 = Cutout2D(data, (0, 0), (3 * u.pixel, 3))
>>> print(cutout4.data)  
[[0. 1.]
 [4. 5.]]
>>> cutout5 = Cutout2D(data, (0, 0), (3, 3), mode='partial')
>>> print(cutout5.data)  
[[nan nan nan]
 [nan  0.  1.]
 [nan  4.  5.]]
属性:
data :二维 ndarray二维

二维剪切阵列。

shape : (2,) tuple(2,) tuple

这个 (ny, nx) 剪切阵列的形状。

shape_input : (2,) tuple(2,) tuple

这个 (ny, nx) 输入(原始)数组的形状。

input_position_cutout : (2,) tuple(2,) tuple

(未取整) (x, y) 相对于切口阵列的位置。

input_position_original : (2,) tuple(2,) tuple

原始(未取整) (x, y) 输入位置(相对于原始数组)。

slices_original : (2,) tupleslice object(2,) tuple of slice object

一个切片对象的元组,用于相对于原始数组的裁切的最小边界框。为 mode='partial' ,则切片用于有效(未填充)剪切值。

slices_cutout : (2,) tupleslice object(2,) tuple of slice object

一个切片对象的元组,用于相对于剪切数组的剪切的最小边界框。为 mode='partial' ,则切片用于有效(未填充)剪切值。

xmin_original, ymin_original, xmax_original, ymax_original : floatPython :浮点

最小值和最大值 xy 与原始数组相比,剪切数组的最小矩形区域的索引。为 mode='partial' ,边界框索引用于有效(未填充)剪切值。这些值与中的值相同 bbox_original .

xmin_cutout, ymin_cutout, xmax_cutout, ymax_cutout : floatPython :浮点

最小值和最大值 xy 切口阵列相对于切口阵列的最小矩形区域的索引。为 mode='partial' ,边界框索引用于有效(未填充)剪切值。这些值与中的值相同 bbox_cutout .

wcs : WCS or NoneWCS或PYTHON:无

如果 wcs 是输入。

属性摘要

bbox_cutout 

边界框 ((ymin, ymax), (xmin, xmax)) 关于剪切阵列的最小矩形区域。

bbox_original 

边界框 ((ymin, ymax), (xmin, xmax)) 与原始数组相关的剪切数组的最小矩形区域。

center_cutout 

中央 (x, y) 剪切阵列相对于剪切阵列的位置。

center_original 

中央 (x, y) 剪切阵列相对于原始阵列的位置。

origin_cutout 

这个 (x, y) 相对于裁切阵列的裁切原始像素的索引。

origin_original 

这个 (x, y) 相对于原始阵列的裁切原始像素的索引。

position_cutout 

这个 (x, y) 剪切数组中的位置索引(四舍五入到最近的像素)。

position_original 

这个 (x, y) 原始数组中的位置索引(四舍五入到最近的像素)。

方法总结

plot_on_original([ax, fill])

在matplotlib Axes实例上打印剪切区域。

to_cutout_position(original_position)

转换一个 (x, y) 在原始大数组中的位置 (x, y) 在剪切阵列中的位置。

to_original_position(cutout_position)

转换一个 (x, y) 在剪切阵列中定位到原始位置 (x, y) 在原始大数组中的位置。

属性文档

bbox_cutout#

边界框 ((ymin, ymax), (xmin, xmax)) 关于剪切阵列的最小矩形区域。为 mode='partial' ,边界框索引用于有效(未填充)剪切值。

bbox_original#

边界框 ((ymin, ymax), (xmin, xmax)) 与原始数组相关的剪切数组的最小矩形区域。为 mode='partial' ,边界框索引用于有效(未填充)剪切值。

center_cutout#

中央 (x, y) 剪切阵列相对于剪切阵列的位置。为 mode='partial' ,计算有效(非填充)剪切值的中心位置。

center_original#

中央 (x, y) 剪切阵列相对于原始阵列的位置。为 mode='partial' ,计算有效(非填充)剪切值的中心位置。

origin_cutout#

这个 (x, y) 相对于裁切阵列的裁切原始像素的索引。为 mode='partial' ,计算有效(非填充)剪切值的原始像素。

origin_original#

这个 (x, y) 相对于原始阵列的裁切原始像素的索引。为 mode='partial' ,计算有效(非填充)剪切值的原始像素。

position_cutout#

这个 (x, y) 剪切数组中的位置索引(四舍五入到最近的像素)。

position_original#

这个 (x, y) 原始数组中的位置索引(四舍五入到最近的像素)。

方法文件

plot_on_original(ax=None, fill=False, **kwargs)[源代码]#

在matplotlib Axes实例上打印剪切区域。

参数:
axmatplotlib.axes.Axes 实例,可选matplotlib.axes.axes实例,可选

如果 None ,然后是电流 matplotlib.axes.Axes 实例已使用。

fill : bool ,可选可选的布尔

设置是否填充剪切面片。默认值是 False .

kwargs可选择的

接受的任何关键字参数 matplotlib.patches.Patch .

返回:
axmatplotlib.axes.Axes 实例matplotlib.axes.axes实例

在if方法中构造的matplotlib轴实例 ax=None . 否则输出 ax 与输入相同 ax .

to_cutout_position(original_position)[源代码]#

转换一个 (x, y) 在原始大数组中的位置 (x, y) 在剪切阵列中的位置。

参数:
original_position : tuplePython :元组

这个 (x, y) 原始大数组中的像素位置。

返回:
cutout_position : tuplePython :元组

相应的 (x, y) 裁切阵列中的像素位置。

to_original_position(cutout_position)[源代码]#

转换一个 (x, y) 在剪切阵列中定位到原始位置 (x, y) 在原始大数组中的位置。

参数:
cutout_position : tuplePython :元组

这个 (x, y) 裁切阵列中的像素位置。

返回:
original_position : tuplePython :元组

相应的 (x, y) 原始大数组中的像素位置。