切口2D#
- class astropy.nddata.Cutout2D(data, position, size, wcs=None, mode='trim', fill_value=nan, copy=False, *, limit_rounding_method=<ufunc 'ceil'>)[源代码]#
基类:
object从二维阵列创建剪切对象。
返回的对象将包含一个二维剪切数组。如果
copy=False(默认),剪切阵列是原始阵列的视图data数组,否则剪切数组将包含原始数据的副本。如果A
WCS对象,则返回的对象也将包含原始WCS的副本,但已为cutout数组更新。有关用法,请参见 二维剪切图像 。
警告
cutout WCS对象当前不处理输入WCS对象包含中描述的失真查找表的情况 FITS WCS distortion paper .
- 参数:
- data :
ndarray恩达雷 从中提取剪切数组的二维数据数组。
- position :
tuple或SkyCoordPython:元组或SkyCoord 剪切阵列的中心相对于
data数组。位置可以指定为(x, y)像素坐标元组或SkyCoord,在这种情况下wcs是必需的输入。- size :
int, array_like ,或QuantityPYTHON:INT、NUMPY:ARRAY_LIKE或QUANTITY 沿每个轴的裁切数组的大小。如果
size是标量数还是标量Quantity,然后是一个方形的裁剪size将被创建。如果size有两个元素,它们应该在(ny, nx)秩序。中的标量数size被假定为以像素为单位。size也可以是Quantity对象或包含Quantity物体。是这样的Quantity对象必须以像素或角度为单位。在所有情况下,size将转换为整数个像素,四舍五入最接近的整数。请参阅mode关键字,以获取有关最终裁切大小的其他详细信息。备注
如果
size如果是以角度单位表示的,则使用沿图像每个轴的像素比例将裁切尺寸转换为像素CRPIX位置。不考虑投影和其他非线性失真。- wcs :
WCS可选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 :
float或int,可选PYTHON:FLOAT或PYTHON:INT,可选 如果
mode='partial',用于填充剪切数组中与输入不重叠的像素的值data.fill_value必须有相同的dtype作为输入data数组。- copy : bool ,可选可选的布尔
如果
False(默认),则剪切数据将成为原始视图的视图data数组。如果True,则剪切数据将保存原始数据的副本data数组。- limit_rounding_method :
callable()Python:Callable() 计算最小和最大像素索引时的舍入方法。这必须是一个可调用的函数。示例:
ceil,floor,round.默认值为ceil.
- data :
- 属性:
- 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,)
tuple的sliceobject(2,)tupleofsliceobject 一个切片对象的元组,用于相对于原始数组的裁切的最小边界框。为
mode='partial',则切片用于有效(未填充)剪切值。- slices_cutout : (2,)
tuple的sliceobject(2,)tupleofsliceobject 一个切片对象的元组,用于相对于剪切数组的剪切的最小边界框。为
mode='partial',则切片用于有效(未填充)剪切值。- xmin_original, ymin_original, xmax_original, ymax_original :
floatPython :浮点 最小值和最大值
x和y与原始数组相比,剪切数组的最小矩形区域的索引。为mode='partial',边界框索引用于有效(未填充)剪切值。这些值与中的值相同bbox_original.- xmin_cutout, ymin_cutout, xmax_cutout, ymax_cutout :
floatPython :浮点 最小值和最大值
x和y切口阵列相对于切口阵列的最小矩形区域的索引。为mode='partial',边界框索引用于有效(未填充)剪切值。这些值与中的值相同bbox_cutout.- wcs :
WCSorNoneWCS或PYTHON:无 如果
wcs是输入。
- 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.]]
属性摘要
边界框
((ymin, ymax), (xmin, xmax))关于剪切阵列的最小矩形区域。边界框
((ymin, ymax), (xmin, xmax))与原始数组相关的剪切数组的最小矩形区域。中央
(x, y)剪切阵列相对于剪切阵列的位置。中央
(x, y)剪切阵列相对于原始阵列的位置。这个
(x, y)相对于裁切阵列的裁切原始像素的索引。这个
(x, y)相对于原始阵列的裁切原始像素的索引。这个
(x, y)剪切数组中的位置索引(四舍五入到最近的像素)。这个
(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实例上打印剪切区域。
- 参数:
- ax :
matplotlib.axes.Axes实例,可选matplotlib.axes.axes实例,可选 如果
None,然后是电流matplotlib.axes.Axes实例已使用。- fill : bool ,可选可选的布尔
设置是否填充剪切面片。默认值是
False.- kwargs可选择的
接受的任何关键字参数
matplotlib.patches.Patch.
- ax :
- 返回:
- ax :
matplotlib.axes.Axes实例matplotlib.axes.axes实例 在if方法中构造的matplotlib轴实例
ax=None. 否则输出ax与输入相同ax.
- ax :