快速半正弦近似:利用 Numpy 增强 Pandas 计算性能
使用半正弦公式计算 Pandas DataFrame 中坐标对之间的距离对于大型数据集来说,计算成本可能很高。然而,当点相对接近且精度要求放宽时,可以实现更快的近似。
考虑以下代码片段:
<code class="python">def haversine(lon1, lat1, lon2, lat2): ... # (haversine calculation) for index, row in df.iterrows(): df.loc[index, 'distance'] = haversine(row['a_longitude'], row['a_latitude'], row['b_longitude'], row['b_latitude'])</code>
为了优化此代码的性能,我们可以利用Numpy强大的数组运算和向量化功能。这种方法消除了循环的需要,并能够同时有效地处理整个数组。
这是使用 Numpy 的矢量化实现:
<code class="python">import numpy as np def haversine_np(lon1, lat1, lon2, lat2): ... # (haversine calculation) inputs = map(np.radians, [lon1, lat1, lon2, lat2]) distance = haversine_np(*inputs)</code>
要将其合并到 Pandas DataFrame 中,我们只需使用如下:
<code class="python">df['distance'] = haversine_np(df['lon1'], df['lat1'], df['lon2'], df['lat2'])</code>
这种向量化方法利用了 Numpy 的优化运算并消除了耗时的循环过程。因此,计算速度明显加快,尤其是对于大型数据集。通过利用 Numpy 的强大功能,我们可以在 Pandas 中实现更快、更高效的半正弦近似。
以上是Numpy 如何增强 Pandas 计算中的半正矢近似性能?的详细内容。更多信息请关注PHP中文网其他相关文章!