从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