【发布时间】:2019-02-24 01:04:35
【问题描述】:
我有很多星系。我需要将这些星系分类成一个半径为 N 的球体,计算每个球体中的平均星系数,并根据半径 N 绘制一个图表。
星系以径向坐标(赤经、赤纬和红移)的形式存储在 .fits 文件中。我正在使用 pyFITS 和 astropy 将星系坐标转换为地球在 (0,0,0) 处的笛卡尔坐标,然后将坐标存储在具有以下结构的 numpy 数组中:((x,y,z),(x1, y1,z1) 等)
为了将星系分成半径为 N 的球体,我从阵列中随机选择一个星系,然后遍历阵列计算随机选择的星系与当前星系之间的距离。如果距离小于或等于半径,则将其添加到球体中。重复次数与需要计算的气泡数一样多。
我目前的方法真的很慢。我对 numpy 不熟悉(我一直在解决问题),而且我真的找不到比遍历所有星系更好的方法了。
有没有办法更快地做到这一点(与 numpy 数组有关 - 我现在正在将它们转换为普通的 python 列表)?这就是我现在正在做的事情 (https://github.com/humz2k/EngineeringProjectBethe/blob/humza/bubbles.py)。
【问题讨论】: