我想找到一个解决我的问题的方法,但没办法。我有一个FITS数据立方体,我需要用PyFITS裁剪它。当我按照我的脚本来做的时候,我最终会得到一个二维的适合的图像!第一个维度是能量,第二个维度和第三个维度分别是经度和纬度。在
我的剧本如下:
#!/usr/bin/env python
import pyfits
import os
import sys
def CropFitsFile( src, dst, xs, xe, ys, ye):
fh = pyfits.open(src)
for eng in range(0,2):
img = fh[0].data[eng,ys:ye,xs:xe]
header = fh[0].header
newfh=pyfits.PrimaryHDU(data=img,header=header)
if os.path.exists(dst):
os.remove(dst)
newfh.writeto(dst)
if __name__ == "__main__":
CropFitsFile(
src=sys.argv[1],
dst=sys.argv[2],
xs=int(sys.argv[3]),
xe=int(sys.argv[4]),
ys=int(sys.argv[5]),
ye=int(sys.argv[6])
)
如果我理解正确,你想切片一个三维数组,但保留第三维度(即使它只是大小1)。在
这是一个关于Numpy数组的问题。当您有一个N维numpy数组时,传递一维的标量索引将返回一个n1维的数组,该数组沿索引的轴切片。例如:
也可以沿不同的轴进行切片,例如:
^{pr2}$无论出于什么原因,如果您希望返回N维数组而不是N维数组,最简单的方法是显式请求大小为1的切片,而不是使用标量索引。例如:
对于其他类似的问题,我也会给出同样的建议:除了数据来自FITS文件之外,这不是一个关于PyFITS的问题。PyFITS和大多数科学Python库一样,以numpy数组的形式返回数据。在大多数科学的Python应用程序中,这些是用于数字数据的主要数据结构,因此学习一些numpy的基本知识是在Python中进行数据分析的一个先决条件。如果你在MATLAB中使用过数组的话。你可以从我的简短教程开始,但还有其他教程(可能还有更好的教程:)github.com/embray/notebooks/blob/master/numpy.ipynb
相关问题 更多 >
编程相关推荐