从fit图像构建数据集的有效方法

我有一组拟合图像:大约32000张图像的分辨率(256,256)。 我要建立的数据集是矩阵状的,所以输出形状是(32000,256 * 256)。

简单的解决方案是for循环,就像:

#file_names is a list of paths
samples=[]
for file_name in file_names:
    hdu=pyfits.open(file_name)
    samples.append(hdu[0].data.flatten())
    hdu.close()
#then i can use numpy.concatenate to have a numpy ndarray

这个解决方案非常非常慢。 那么构建这么大数据集的最佳解决方案是什么?


这并不是真正意义上的主要答案,但我觉得评论太长并且是相关的。

我相信在不调整代码的情况下你可以做一些事情。

Python是一种语法语言,并以不同的方式实现。 传统的实现是CPython,这是您从网站下载的内容。 但是,还有其他实现(请参阅此处)。

长话短说,尝试使用PyPy,因为它经常运行速度明显快于“渴望内存的python”,比如你的。 这里是一个很好的关于每个优点的reddit文章,但基本上使用PyPy,并优化你的代码。 另外,我从来没有使用过Numpy,但是这篇文章暗示你可能会保留Numpy并仍然使用PyPy。

(通常,我也建议你使用Cython,但它看起来并不能很好地与Numpy配合使用,我不知道Cython是否支持Numpy,但你可以自己google。)祝你好运!

链接地址: http://www.djcxy.com/p/53159.html

上一篇: Efficient way to build a data set from fits image

下一篇: clean up re.match objects