我有200个fits文件,我需要加载和平均出来创建一个地图。不过,我想知道的是,如果我能做到这一点适合。打开“台词。我在什么地方见过,但我记不起在哪儿了。在
文件名为Coadd000_5.fits、Coadd001_5.fits、Coadd002_5.fits、Coadd003_5.fits。。。Coadd199 U 5.配合。在
所以它必须与
hdulist2 = fits.open('/Users/alibinesh/Desktop/Data/actpolS2Lensing/actPolS2LensProducts/realKappaCoadd' + xyz + '_5.fit')
或者类似的东西。从0到199,我需要做一个for循环吗?在
谢谢你
您可能试图记住list comprehension,这是一种简洁易读的
for
循环的方法。在(文件路径缩短以提高可读性)
每当您发现自己想要初始化一个空的
list
,然后在for
循环中将其.append()
初始化为它,请考虑"list comprehension"在一行中完成。或者是"generator expression",这是一个密切相关的语法,但它的计算是懒惰的(这将允许您处理事物“深度优先”,而表面上似乎似乎去广度优先,但我怀疑这对您的情况是否有任何真正的好处)。在您可能还发现迭代
^{pr2}$glob
的输出非常有用,它将查找与某个模式匹配的所有文件名:由于(从注释中)似乎打开
fits
文件需要大量的开销,您可能一次只需要打开一个文件。因此,您应该高效地“深度优先”操作,在继续下一个文件之前,用一个文件完成您的业务。在我看来,最易读的方法是将一个文件的所有必要步骤按顺序放入deal_with
函数中:使用for循环可以很容易地完成此操作:
使用
for
循环:不要像在其他答案中那样同时打开每个文件,这可能会产生很大的开销,并且可能不是您只需要平均每个文件中的一些数据即可(或者即使您确实需要同时访问多个同时文件,也应该将相关部分读入内存并关闭文件)。在
你到底想做什么?很可能已经有一个图书馆可以帮上忙。在
相关问题 更多 >
编程相关推荐