【发布时间】:2016-07-08 20:32:21
【问题描述】:
我正在使用 AstroPy SkyCoord 进行从赤道坐标到银河坐标的数百万数据的转换,它非常慢。任何人都有加快速度的想法,否则运行整个数据集需要很长时间。代码如下:
from astropy import units as u
from astropy.coordinates import SkyCoord
import numpy as np
ra1 = np.loadtxt('data.txt',usecols=(0,))
dec1 = np.loadtxt('data.txt',usecols=(1,))
size = len(ra1)
for i in range(size):
ra = ra1[i]
dec = dec1[i]
c = SkyCoord(ra*u.degree, dec*u.degree)
cc = c.galactic
b = cc.b.degree
l = cc.l.degree
【问题讨论】:
-
“极慢”有多慢?请量化数据量和所需时间。如果
ra和dec是您的输入数组,这可能是您能获得的最快速度(除非您围绕它编写一些多处理代码)。 -
@Evert 运行 180,000 条数据大约需要一个小时。但我有超过500万。我不明白为什么转换需要这么长时间才能运行。
-
我可以用
len(c) == 10000000很好地运行它。您可能会遇到机器的内存限制并进行大量交换。虽然180,000真的很低。你机器的内存限制是多少? -
您忘记在示例中显示循环;那误导了我。只要确保你有一个完整的例子。
-
请出示您的完整代码。
标签: python coordinates data-conversion astropy