- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在使用 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
最佳答案
I loop over the whole data, but do the conversion one by one.
不要那样做。从向量的角度思考,就像 numpy 一样。 astropy 中的大多数例程都应按矢量方式使用。
因此:
from astropy import units as u
from astropy.coordinates import SkyCoord
import numpy as np
c = SkyCoord(np.array(ra1)*u.degree, np.array(dec1)*u.degree)
cc = c.galactic
b = cc.b.degree
l = cc.l.degree
并且不要遍历它。
c
、cc
、b
和 l
都将是数组(尽管有些是 SkyCoord
数组),长度与 ra1
和 dec1
相同。
对于您机器上的 180,000,这应该需要不到一秒的时间来运行。
当您的数据(列表)增长到超过 10,000 或 100,000 个元素时,您几乎不必在 Python 中运行 for 循环。使用 numpy(或此处为 astropy),或者如果没有其他选择,请寻找 Cython 或什至用 C 编写代码。(或使用 PyPi,但会失去很多库兼容性。)
Python 在(大)列表/数组上循环时并不快,而且它从来就不是这样。
关于python - AstroPy SkyCoord 极慢,如何解决?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36146183/
我尝试在 astropy 表的 numpy 数组中转换一个 astropy 表列表。在第一个实例中,我尝试了 np.asarray(list) 和 np.array(list) 但列表中的 astro
所以我正在尝试使用 Astropy 并且我确实下载了它。但是,我收到一个错误。我正在尝试使用 Python 2 而不是 Python 3。 代码只是: import astropy astropy.t
我正在为 Raspberry Pi 开发一个应用程序,以控制 AltAzimutal 支架上的业余望远镜。 方位轴与天顶不完全对齐。在这种情况下,可以指向 2 或 3 颗星并找到视望远镜和赤道坐标之间
我目前是天文学的初学者,作为项目的一部分,我必须导入一些拟合文件或分析。但是,当我运行代码来导入 astropy.io 时,出现权限错误。 Traceback (most recent call la
我正在 Astropy 中进行坐标转换。但这不能正常工作。情况如下,我有一个 J2000 中的恒星坐标,我想将其转换为实际的纪元(或其他特定日期)。我正在使用 Stellarium 提供的坐标验证代码
我有一个适合的事件数据文件,我需要通过添加一个新的数据列来修改其中一个表,该数据列由存储在同一个表的预先存在的列中的数据派生。我遇到的问题是关闭修改后的文件。这是代码: data = fits.ope
我正在尝试使用 astropy.modeling 包将高斯拟合到一组数据点,但我得到的只是一条平线。见下文: 这是我的代码: %pylab inline from astropy.modeling i
我在为 python 安装 astropy 时遇到问题。当我在终端中输入“pip install astropy”时,我收到以下消息: Collecting astropy Using cached
我正在尝试使用 Python 和 astropy.io 从 FITS 文件中的二进制表中提取数据。该表包含一个事件数组,其中包含超过 200 万个事件。我想要做的是将某些事件的 TIME 值存储在一个
我有一个辐射源的多波段目录(来自 SourceExtractor,如果你想知道的话),我已将其读入以下形式的天体表: Source # | FLUX_APER_BAND1 | FLUXERR_APER
我正在尝试在 Python 中创建一个 FITS 文件,但在将 header 和 PrimaryHDU 一起编译时我似乎遇到了问题。 我做了一个简单的例子,它将给出我得到的错误: import num
我有一个保存星星数据的 astropy.table.table 对象。每颗星一行,列中包含星名、最大星等数据。 我知道 astropy 表的内部表示是每一列的字典,行作为字典对象的切片即时返回。 我需
我有一个 for 循环,它生成几个变量,例如 a、b 和 c。我想在 for 循环结束后,垂直堆叠变量。这是我想做的。 (为了举例,假设变量只是数字(1,2,3))。 from astropy.tab
我最近将我的 python 代码升级到了 Python 3.4.2。我运行的是 Ubuntu 14.10。 我使用了 pip3 和 apt-get python3- 的组合来升级我所有常用的模块:nu
我在 equatorial coordinates 中有一组点我需要将它们投影到平面上,即:天顶角或 azimuthal projection . astropy 显然能够执行这种类型的投影,amon
考虑一个astropy Table() object . from astropy.io import ascii weather_data = """ day,precip,type ,1.
我有一个看起来像这样的 astropy 表: $ print(astro_table) id xcentroid ycentroid sharpness roun
在以前的 astropy 版本中,可以按照以下方式处理不确定性的传播: from astropy.nddata import NDData, StdDevUncertainty x = NDData(
我在这里看到了几个关于 PyEphem 的答案,以及它如何产生日落/日出时间,但是如果我能找到仅使用 Astropy 包的解决方案,这对我来说会更有用。目前,我发现最接近的是 astropy.coor
我有两个源,其赤道坐标 (ra, dec) 和 (ra_0, dec_0) 位于距离 r 和 r_0,我需要计算它们之间的 3D 距离。 据我所知,我使用的两种方法应该给出相同的结果,但实际上没有。
我是一名优秀的程序员,十分优秀!