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

时间:2017-09-13 22:13:16

标签: python python-3.x dataset pyfits

我有一组适合图像:大约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

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

1 个答案:

答案 0 :(得分:1)

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

我相信如果不调整代码,您可以做一些事情。

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

长话短说,请尝试PyPy,因为它通常会像你这样的“内存饥饿的python”快得多。 Here是一个关于每个优点的非常好的reddit帖子,但基本上使用PyPy,并优化你的代码。另外,我从未使用过Numpy,但post表明你可以保留Numpy并仍然使用PyPy。

(通常情况下,我也建议您使用Cython,但它似乎与Numpy完全没有关系。我不知道Cython是否支持Numpy,但你可以自己谷歌祝你好运!