Python加速计算(大圆距离)

时间:2019-07-15 14:33:31

标签: python arrays performance

我想计算两个坐标为(rho和(lat1, lon1)的数组中存储的点之间的大圆距离(角度)lat2, lon2。:

deg2rad = np.pi/180.0
rho_cos = (np.sin(lat1[:,None]*deg2rad)*np.sin(lat2[None,:]*deg2rad) +
      np.cos(lat1[:,None]*deg2rad)*np.cos(lat2[None,:]*deg2rad)*np.cos(np.abs(lon1[:,None] - lon2[None,:])*deg2rad))

rho = np.arccos(rho_cos) / deg2rad

数组lat1lon1包含数量级〜70000数据点,lat2lon2包含数量级〜1200数据点。我需要使用不同的坐标数组进行多次(〜100000)次计算。可能的唯一lat1lat2值来自具有450个数据点的数组,可能的唯一lon1lon2值来自具有900个数据点的数组。

当前,计算是“缓慢的”(从大约100000次迭代的预期总时间而言),在单个内核上每次迭代大约需要4.5秒。如何加快计算速度?庞大的查找表,可用于所有可能的带有索引的坐标对?并行化?更快的numpyscipy本机功能?

0 个答案:

没有答案