给定一个矩阵,计算距离矩阵是一个非常常见的需求,比如给定一个特征矩阵需要计算距离矩阵。自己写的话虽然简单每次写也往往很烦,而且自己写的代码效率过低了,使用scipy中的包的话无疑会好一点,具体来说,使用scipy.spatial.distance,该包的具体介绍可以看一下官网和这个博客。
下面贴一个我写的基于经纬度矩阵,计算两两间的距离的代码:
具体矩阵的形式是一个dataframe,一列是经度,一列是纬度,如下图所示,下面代码中的cam就是这个dataframe。

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from scipy.spatial.distance import pdist
from scipy import spatial
import math# 定义通过经纬度计算直线距离的函数
from math import radians, cos, sin, asin, sqrt
def geodistance(lng1,lat1,lng2,lat2):if lng1 == None or lng2 == None or lat1 == None or lat2 == None:return 999999elif (lng1 < 119 or lng1 > 121) or (lng2 < 119 or lng2 > 121) or (lat1 < 29 or lat1 > 30) or (lat2 < 29 or lat2 > 30):return 999999lng1 = float(lng1) ; lng2 = float(lng2) ; lat1 = float(lat1) ; lat2 = float(lat2)lng1,lat1,lng2,lat2 = map(radians,[lng1,lat1,lng2,lat2])dlon = lng2-lng1dlat = lat2-lat1a = sin(dlat/2)**2 + cos(lat1) * cos(lat2) * sin(dlon/2)**2distance = 2* asin(sqrt(a))*6371*1000distance = round(distance/1000,3)return distance
def caldis(u,v):# 计算输入矩阵中两个向量的距离return geodistance(u[0],u[1],v[0],v[1])# 将cam转化为向量的形式
X = cam.values
X_mat = spatial.distance.squareform(pdist(X , metric=caldis))

上面代码得到的X_mat就是每两个经纬度点之间的直线距离了。
下面我还希望求出这个距离矩阵中每一行中距离小于等于1的个数,并将这个个数保存到dataframe cam中去,代码如下:

def sma1(ser):return (len(ser[ser<=1]))
cam['devdes'] = np.apply_along_axis(sma1, 1, X_mat)

如果不是一个矩阵各个样本两两间的距离,而是两个矩阵两两间的距离,则可以使用函数from scipy.spatial.distance import cdist,代码如下:

X_mat = cdist(cam[['lng','lat']].values , tmp[['lng','lat']].values , metric=caldis)

得到的结果是len(cam[[‘lng’,‘lat’]])行,len(tmp[[‘lng’,‘lat’]].values)列的一个矩阵,第i,j个元素代表的含义是cam[[‘lng’,‘lat’]]第i行和tmp[[‘lng’,‘lat’]]第j列两个元素的距离。

基于经纬度矩阵计算距离矩阵相关推荐

  1. R语言构建logistic回归模型并评估模型:构建基于混淆矩阵计算分类评估指标的自定义函数、阳性样本比例(垃圾邮件比例)变化对应的分类器性能的变化、基于数据阳性样本比例选择合适的分类评估指标

    R语言构建logistic回归模型并评估模型:构建基于混淆矩阵计算分类评估指标的自定义函数.阳性样本比例(垃圾邮件比例)变化对应的分类器性能的变化.基于数据阳性样本比例选择合适的分类评估指标 目录

  2. R语言构建logistic回归模型并评估模型:计算混淆矩阵、并基于混淆矩阵计算Accuray、Precision、Recall(sensitivity)、F1、Specificity指标

    R语言构建logistic回归模型并评估模型:计算混淆矩阵.并基于混淆矩阵计算Accuray.Precision.Recall(sensitivity).F1.Specificity指标 目录

  3. 计算机应用研究潜规则,基于相容矩阵计算的不完备决策系统规则获取算法

    基于相容矩阵计算的不完备决策系统规则获取算法 针对不完备信息决策系统问题,引入相容关系下条件属性矩阵和决策属性矩阵的相关概念,并由此提出一种基于矩阵计算的不 (本文共6页) 阅读全文>> ...

  4. mysql数据范围什么意思_数据都在mysql里的话,基于经纬度的范围查询有什么高效的方案吗...

    [今日话题] 数据都在mysql里的话,基于经纬度的范围查询有什么高效的方案吗 – yingang 1. 经纬度搜索(1)-Geohash算法原理 http://hankesi2000.iteye.c ...

  5. 【K-Means】基于经纬度的城市聚类

    文章目录 1. 项目准备 1.1. 问题导入 1.2. 数据集简介 2. K-Means算法 2.1. 算法特点 2.2. 算法流程 2.3. 算法缺陷 2.4. 算法改进 3. 实验步骤 3.1. ...

  6. 基于Optaplanner和距离矩阵 实践动态路径规划

    optaplanner根据百度地图计算实际距离规划路线 https://blog.csdn.net/kentis/article/details/81324631 UserCase:从上海枢纽配送中心 ...

  7. 基于经纬度进行商圈定位

    一:使用高德地图的接口 获取key的步骤: 1.申请网站: https://lbs.amap.com/ 2.登陆注册 3.选择开发支持–>web服务API 4.进入控制台–>我的应用 5. ...

  8. 基于经纬度和工作日的拜访轨迹问题

    一 问题描述 设有 n 家客户,n <= 24,每个客户有如下属性(客户名称.客户类型.经度.纬度.每月拜访次数). 每个客户 m 天拜访 1 次. 每个客户每天最多拜访 8 次. 给出一个月的 ...

  9. 基于经纬度的拜访轨迹问题

    一 问题描述 设有 n 家客户,n<=31,每个客户有如下属性(客户名称.客户类型.经度.纬度.每月拜访次数). 每个客户 times 天拜访 1 次. 每个客户每天最多拜访 8 次. 每月天数 ...

  10. python基于经纬度距离汇聚点_python实现两个经纬度点之间的距离和方位角

    from:http://blog.csdn.net/zhuqiuhui/article/details/53180395 1.  求两个经纬点的方位角,P0(latA, lonA), P1(latB, ...

最新文章

  1. faiss简介及示例
  2. [pytorch、学习] - 9.1 图像增广
  3. vue.js 引用背景图 background 无效的3种解决办法
  4. 测试学开发——第一课:环境搭建与页面开发介绍。
  5. php计算一段时间工作日,PHP计算8小时工作日的一半
  6. JQuery学习记录——jQuery对象和DOM对象的转换
  7. Python JSONPath示例
  8. android 删除特定字符串,android-从改造响应中删除不需要的字符串
  9. 双变量空间自相关_空间计量经济学的发展及其应用,经济模型总会需要
  10. python HTTP请求过程
  11. 微软补丁地址以及查找方式
  12. r语言 断轴 画图_R语言之画图(一)
  13. 2019长安大学ACM校赛网络同步赛 B Trial of Devil (递归)
  14. SpringBoot 使用异常自定义错误码
  15. 阿里云主体变更和备案过程
  16. 马尔可夫蒙特卡洛(MCMC)-从平稳分布,细致平衡到Metropolis-Hastings和Gibbs采样
  17. 计算机房电源引入方式,(完整版)通信机房电源计算公式.pdf
  18. 微软正式宣布 Visual Studio 2022!
  19. 浏览器上查看微信公众号的所有历史文章
  20. 树的遍历(Java)

热门文章

  1. 八戒,别以为你站在路灯下就是夜明猪了!
  2. Canvas 原生实现图片涂抹打马赛克功能
  3. Paradise Lost - John Milton
  4. vue图片时间轴滑动_使用vue,来写个时间轴
  5. excel表格打印每页都有表头_excel怎样打印每页都有表头
  6. 投机之殇——解说史上最大CPU漏洞
  7. 金山云CDN:国内最佳付费CDN
  8. Word 宏命令大全
  9. 3d模型 vv5_你也想做锦鲤信小呆?WEY VV5升级款这就来满足你!
  10. Halcon知识:binocular_disparity(双目视差)