查看“Astropy.io.fits”的源代码
←
Astropy.io.fits
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
>>> hdulist = fits.open('input.fits') >>> hdulist.info() ==header== >>> hdr=hdulist[0].header >> list(hdr.keys()) >>> hdr['targname'] >>> header[:2] #只看前面两个 >>> hdr.set('observer', 'Edwin Hubble') #添加header * FITS标准使用的特定结构关键字集随HDU类型的不同而不同,还有许多其他保留的关键字,例如用于数据缩放的关键字,或用于表的列属性的关键字,如FITS标准中所述。其中大多数都可以通过Column或HDU对象的属性访问,例如用HDU .name设置EXTVER的 EXTNAME或HDU.ver。结构关键字将作为通用操作的结果进行检查和/或更新。例如,关键字NAXIS*从数据形状(.data.shape)中设置,BITPIX从数据类型(.data.dtype)中设置,调用HDU的验证方法(PrimaryHDU.verify()),一些关键字可以自动修复。 ===comment/hitory=== >>> hdr['history'] = 'I updated this file 2/26/09' >>> hdr['comment'] = 'Edwin Hubble really knew his stuff' >>> hdr['comment'] = 'I like using HST observations' >>> hdr['history'] I updated this file 2/26/09 >>> hdr['comment'] Edwin Hubble really knew his stuff I like using HST observations >>> hdr['comment'][1] = 'I like using JWST observations' >>> hdr['comment'] Edwin Hubble really knew his stuff I like using JWST observations ==fits table 的读与写== *读 hdu = fits.open('SFH_LMC3_out.fits') hdu.info() #看看哪些hdu data=hdu[1].data cols=hdu[1].columns data.columns #看看有那些列 data.field(0) #读取第一列,也可以拿到列的名字,然后data['tag']读取 data[0] #第一行 * 修改columns中某个keyword的值 columns = fits.ColDefs(hdul[1].columns) clumns1.change_attrib(col_name='DATA',attrib='format',new_value='8388608B') *写 from astropy.table import Table t=Table([Bage,fzbin,Age_weight2],names=('Age','z','weights')) t.write('SFH_LMC3_out.fits',format='fits') *更新 :可以使用**HDUList.flush()方法将自open()**以来所做的所有更改写回原始文件。**close()**方法将对以更新模式打开的FITS文件执行相同的操作: with fits.open('original.fits', mode='update') as hdul: # Change something in hdul. hdul.flush() ==fits文件打开过多错误== * [https://docs.astropy.org/en/stable/io/fits/appendix/faq.html#i-am-opening-many-fits-files-in-a-loop-and-getting-oserror-too-many-open-files] * fits.close() * 可能还根系统设置有关 ulimit -a ulimit -n 100000 vim /etc/security/limits.conf * 把python的软限制编程硬限制,参见 [https://bbs.huaweicloud.com/blogs/108323],下面方法貌似也不管用 import resource soft, hard = resource.getrlimit(resource.RLIMIT_NOFILE) resource.setrlimit(resource.RLIMIT_NOFILE, (hard, hard)) *lsof -p 进程id > openfiles.log命令,获得当前占用句柄的全部详情进行分析 * 实测这两个效果不好(python 3.8) :*del hdu.data :*hdu = fits.open(fits_name,memmap=False) #打开fits文件数目比较多的情况下 ==fits image读写== n = np.arange(100.0) hdu = fits.PrimaryHDU(n) hdu.writeto('new2.fits') hdu.writeto('new2.fits') *如果超过一个hdu >>> hdul = fits.HDUList([hdu]) >>> hdul.writeto('new1.fits')
返回至“
Astropy.io.fits
”。
导航菜单
个人工具
登录
命名空间
页面
讨论
大陆简体
已展开
已折叠
查看
阅读
查看源代码
查看历史
更多
已展开
已折叠
搜索
导航
首页
社群首页
最近更改
随机页面
帮助
工具
链入页面
相关更改
特殊页面
页面信息