计算N个点和M个点之间的距离
KNN中,训练样本有train_count个,测试样本有test_count个,每个样本有attr_count个属性。现在需要快速计算test_count个测试样本和train_count个样本之间的距离,距离表示为一个test_count行、train_count列的矩阵。
这个问题可以转化为矩阵乘法,而矩阵乘法可以使用GPU进行加速。
import numpy as np
train_count = 3
test_count = 2
attr_count = 4
train = np.random.randint(0, 10, (train_count, attr_count))
test = np.random.randint(0, 10, (test_count, attr_count))
def one():
c = np.empty((test_count, train_count), dtype=np.float32)
for i in range(c.shape[0]):
for j in range(c.shape[1]):
c[i, j] = np.linalg.norm(test[i] - train[j])
return c
def two():
c = np.empty((test_count, train_count), dtype=np.float32)
for i in range(c.shape[0]):
c[i] = np.linalg.norm(test[i] - train, axis=1)
return c
def three():
d1 = np.linalg.norm(test, axis=1)
d2 = np.linalg.norm(train, axis=1)
d3 = np.matmul(test, train.T)
d12 = (d1 ** 2).reshape(test_count, 1)
d22 = (d2 ** 2).reshape(1, train_count)
ans = np.sqrt(d12 + d22 - 2 * d3)
return ans
print(one())
print(two())
print(three())
计算N个点和M个点之间的距离的更多相关文章
- sql server2008根据经纬度计算两点之间的距离
--通过经纬度计算两点之间的距离 create FUNCTION [dbo].[fnGetDistanceNew] --LatBegin 开始经度 --LngBegin 开始维度 --29.49029 ...
- IOS 计算两个经纬度之间的距离
IOS 计算两个经纬度之间的距离 一 丶 -(double)distanceBetweenOrderBy:(double) lat1 :(double) lat2 :(double) lng1 :(d ...
- 2D和3D空间中计算两点之间的距离
自己在做游戏的忘记了Unity帮我们提供计算两点之间的距离,在百度搜索了下. 原来有一个公式自己就写了一个方法O(∩_∩)O~,到僵尸到达某一个点之后就向另一个奔跑过去 /// <summary ...
- 计算两个latitude-longitude点之间的距离? (Haversine公式)
问题描述 如何计算纬度和经度指定的两点之间的距离?为了澄清,我想要距离公里;这些点使用WGS84系统,我想了解可用方法的相对准确性.最佳解决方案 这个link可能对您有帮助,因为它详细说明了使用Hav ...
- reactjs中使用高德地图计算两个经纬度之间的距离
第一步下载依赖 npm install --save react-amap 第二步,在组件中使用 import React, { Component } from 'react' import { L ...
- 高德地图 API 计算两个城市之间的距离
1. 目前在项目中,遇到一个需求不会做,就是要计算两个城市之间的距离,而这两个城市的输入是可变的,如果要使用数据库来先存储两地之间的距离,调用的时候再来调用,那么存数据的时候,要哭的,因为光是省级区域 ...
- PHP 根据两点的坐标计算之间的距离
define('PI',3.1415926535898); define('EARTH_RADIUS',6378.137); //计算范围,可以做搜索用户 function GetRange($lat ...
- 微信小程序——计算2点之间的距离
关于计算2点之间的距离都依赖了腾讯地图,所以请先在腾讯地图官网申请key.具体流程看下图: 下面具体讲计算2点之间距离的方法. 方法一: 1.通过 wx.getLocation(Object obje ...
- PHP计算两个已知经纬度之间的距离
/** *求两个已知经纬度之间的距离,单位为千米 *@param lng1,lng2 经度 *@param lat1,lat2 纬度 *@return float 距离,单位千米 **/ privat ...
随机推荐
- Zookeeper笔记(二)Paxos算法与Zookeeper的工作原理
Zookeeper 分布式服务框架是 Apache Hadoop 的一个子项目, 它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务.状态同步服务.集群管理.分布式应用配置项的管 ...
- Python 动态生成多个变量
引用自:https://blog.csdn.net/u013061183/article/details/78015673 用Python循环创建多个变量, 如创建 a1= .a2= .a3= ...
- 笔记:FastAdmin 上传设置
笔记:FastAdmin 上传设置 FastAdmin 的上传设置为统一配置,在 application/extra/upload.php 中文件中. <?php //上传配置 return [ ...
- Ubuntu18.04更换国内源
Ubuntu18.04更换国内源 Ubuntu本身的源使用的是国内的源,下载速度比较慢,不像CentOS一样yum安装的时候对镜像站点进项选择, 所以选择了更换成国内的源. 以下内容整合自网络 备份/ ...
- python爬虫之下载文件的方式总结以及程序实例
python爬虫之下载文件的方式以及下载实例 目录 第一种方法:urlretrieve方法下载 第二种方法:request download 第三种方法:视频文件.大型文件下载 实战演示 第一种方法: ...
- SpringBoot-@PathVariable
URL变量 在上一个博客中,学习了如何在@Controller中创建@RequestMapping(或者响应的简写)来处理不同的URL请求.但是在Web应用中URL通常不是一成不变的,例如微博两个不同 ...
- [POI2011]Rotacje na drzewie (2)/[BZOJ3702]二叉树
[POI2011]Rotacje na drzewie (2) 题目大意: 一棵有\(n\)个叶子结点的二叉树,每个叶子结点有一个权值,恰好是\(1\sim n\)的一个排列,你可以任意交换每一对子结 ...
- TVTK库的安装
1.在网址为:http://www.lfd.uci.edu/~gohlke/pythonlibs/ 里下载以下内容: VTK-7.1.1-cp36-cp36m-win_amd64.whlnumpy-1 ...
- BZOJ4374 : Little Elephant and Boxes
设$f[i][j][k]$表示前$i$个物品买了$j$个,消耗$k$个钻石,最少花多少钱,可以通过简单的DP求出. 枚举拥有的钻石数以及最多能购买的物品数的下界,那么钱数的下界是定值. 将$n$个箱子 ...
- map在遍历数据的过程中删除数据不出错
// Iterator<Map.Entry<String,Long>> entries = Map.entrySet().iterator(); ...