如何使用 NumPy 数组的矢量化来使用 Geopy 库计算大型数据集的测地距离?

2023-11-23

我正在尝试从数据帧计算测地距离,该数据帧由四列纬度和经度数据组成,大约有 300 万行。我使用 apply lambda 方法来完成此任务,但花了 18 分钟才能完成任务。有没有办法将矢量化与 NumPy 数组结合使用来加速计算?谢谢您的回答。

我的代码使用 apply 和 lambda 方法:

from geopy import distance

df['geo_dist'] = df.apply(lambda x: distance.distance(
                              (x['start_latitude'], x['start_longitude']),
                              (x['end_latitude'], x['end_longitude'])).miles, axis=1)

Updates:

我正在尝试这段代码,但它给了我错误:ValueError:具有多个元素的数组的真值不明确。使用 a.any() 或 a.all()。如果有人可以提供帮助,我们将不胜感激。

df['geo_dist'] = distance.distance(
                          (df['start_latitude'].values, df['start_longitude'].values),
                          (df['end_latitude'].values, df['end_longitude'].values)).miles

我想你可能会考虑使用geopandas为此,它是 pandas 的扩展(因此numpy)旨在非常快速地执行这些类型的计算。

具体来说,它有一种计算点集之间距离的方法GeoSeries,它可以是a的一列GeoDataFrame。我相当确定这种方法可以利用numexpr用于矢量化。

它应该看起来像这样,您可以将数据框转换为GeoDataFrame与(至少)两个GeoSeries可用于起点和终点的列。这应该返回一个GeoSeries object:

import pandas as pd
import geopandas as gpd
from shapely.geometry import Point

geometry = [Point(xy) for xy in zip(df.longitude, df.latitude)]
gdf = gpd.GeoDataFrame(df, crs={'init': 'epsg:4326'}, geometry=geometry)

distances = gdf.geometry.distance(gdf.destination_geometry)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 NumPy 数组的矢量化来使用 Geopy 库计算大型数据集的测地距离? 的相关文章

随机推荐

  • 在 JBuilder 中生成嵌套 JSON 数组

    我在 ruby on Rails 中有这个模型 分支模型 has many menus class Branch lt ActiveRecord Base belongs to place belongs to city has many
  • 将字符串转换为 java.util.Stream

    有时我想对字符串中的每个字符做一些简单的事情 不幸的是 因为字符串是不可变的 所以除了循环字符串之外没有什么好的方法可以做到这一点 这可能非常冗长 如果您使用 Stream 它可以做得更短 只需一两行 有没有办法转换String into
  • 将linux 2.7上的python更新到3.5

    所以我使用这些指令更新了 python sudo apt get install build essential checkinstall sudo apt get install libreadline gplv2 dev libncur
  • 抛出异常时抛出异常

    这段代码 include
  • 如何检查Azure Blob存储上传是否成功?

    我使用 Azure SAS URL 将文件上传到 Blob 存储 var blockBlob new Microsoft WindowsAzure Storage Blob CloudBlockBlob new System Uri sas
  • Volatile.Read / Volatile.Write 是“双”原子的吗?

    MSDN 指出 其他类型的读取和写入 包括long ulong double and decimal以及用户定义的类型不需要是原子的 C 7 0 规范草案 变量 9 6 变量引用的原子性 Will Volatile Write Double
  • jQuery 创建具有属性差异的元素

    发现了一些东西 并且正在研究一些关于为什么一种方法有效而另一种方法无效的煽动 看起来只是 IE7 的事情 但作为 IE7 唉 我工作的应用程序仍然需要一些支持 在 IE7 中的工作方式 var month jQuery
  • Symfony form.vars.data 与 form.vars.value

    Symfony 中的 FormView 对象包含多个变量 可以使用 public 通过 twig 访问这些变量vars财产 其中两个变量是value and data 所以 假设我们有我们的formtwig 中的变量 我们可以使用form
  • Windows 8 中非零文件的“磁盘大小”为零?

    我发现我的磁盘上有一些文件1 实际大小不为零 但很小 大约500字节2 当您检查其属性时 磁盘上的大小 显示为零3 如果我把文件变小 磁盘上的大小 仍然是04 如果我将文件变大 即使变大1个字节 磁盘上的大小也会变为40965 磁盘未压缩
  • Python 中 shell 命令的字符串转义[重复]

    这个问题在这里已经有答案了 我有兴趣转义 Python3 x 中的字符串 例如 SOME MACRO a b into SOME MACRO a b 这样它就可以作为定义传递给程序 在本例中不是 gcc eg some program DS
  • 发布模式下安全 Rust 中的有符号整数溢出是否被视为未定义行为?

    Rust 在调试和发布模式下以不同的方式处理有符号整数溢出 当这种情况发生时 Rust 在调试模式下会发生恐慌 而在发布模式下则默默地执行二进制补码包装 据我所知 C C 将有符号整数溢出视为未定义行为 部分原因是 在 C 标准化时 表示有
  • 在运行时检索 Log4J Appender 列表

    是否可以在运行时检索 log4j 中配置的所有附加程序的列表 我将进一步充实这个场景 给定以下配置 我将如何检索所有附加程序 stdout 和 altstdout log4j rootLogger error stdout log4j ap
  • 在 CMake 中使用别名目标

    定义 CMake 目标时 可以创建别名目标 以便别名可用于在后续命令中引用定义的目标 例如 add library foo lib foo cpp bar cpp bat cpp add library foo lib ALIAS foo
  • 在 Javascript 对象中使用 $.getJSON() 和回调

    我正在尝试设置一个对象 以便它具有封装的 getJSON 方法 这是我的设置 function Property price deposit this price price this deposit deposit this getMor
  • 引起原因:java.lang.IllegalStateException:没有为此提供程序指定值

    我试图从 github 导入一个项目 但它显示了此配置问题 有人可以建议我该怎么办吗 2019 09 06 19 23 53 953 thread 10 INFO e project sync GradleSyncState Gradle
  • 假设我有一组链接 我可以使用吗 div 代替 div
  • 通用 CRUD 控制器和视图

    我刚刚浏览了 ASP NET 的一些入门教程 并且对如何实现简单的 CRUD 管理应用程序有了一个不错的了解 是否有任何常用的模式来实现通用列表 创建 更新 删除操作 必须为每个模型构建脚手架 然后维护所有添加 编辑和列表视图和控制器 这似
  • Jspx 文件和条件注释

    我想使用 Spring 和 jspx 网页创建一个 Web 应用程序 我的问题是如何在 jspx 中添加 IE 的条件注释 他们似乎没有被解释 另外我希望我的网页是 HTML5 投诉 我尝试了一些方法 但在 IE9 中遇到不兼容问题 似乎无
  • cURL 错误 35 - 连接到 api.rkd.reuters.com 时出现未知 SSL 协议错误:443

    在开发机器 mac 上 通过 PHP 中的 cURL 连接到此没有问题 但在 Ubuntu 中 我收到此错误 我已经在本地计算机和 Amazon AWS 实例上尝试过 我用谷歌搜索了又搜索 但一直遇到砖墙 没有防火墙限制 这完全是个谜 ph
  • 如何使用 NumPy 数组的矢量化来使用 Geopy 库计算大型数据集的测地距离?

    我正在尝试从数据帧计算测地距离 该数据帧由四列纬度和经度数据组成 大约有 300 万行 我使用 apply lambda 方法来完成此任务 但花了 18 分钟才能完成任务 有没有办法将矢量化与 NumPy 数组结合使用来加速计算 谢谢您的回