博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
三种不同的方式,计算欧氏距离,速度比较
阅读量:5089 次
发布时间:2019-06-13

本文共 973 字,大约阅读时间需要 3 分钟。

import time import numpy as np #计算单行的欧氏距离 def cal_1(vec):     dist = np.linalg.norm(vec)     sim = (1.0 / (1.0 + dist))     return sim #计算多行的欧氏距离 def cal_2(vec):     dist = np.linalg.norm(vec,axis=1)     sim = (1.0 / (1.0 + dist))     return sim #生成向量vec1 t = np.zeros(20000,dtype=float) vec1 = np.append(np.random.rand(100),t)   #构建一个20100维的稀疏矩阵 vec1 = np.tile(vec1,(10000,1))               #10000行 print('built vec sucess!',vec1.shape) #使用for循环计算欧氏距离 time1 = time.time() arr1 = np.array([]) for i in vec1:     b = cal_1(i)     # print(b)     arr1 = np.append(arr1,b) time2 = time.time() print(time2-time1) #使用map计算欧氏距离 time1 = time.time() arr2 = np.array(list(map(cal_1,vec1))) time2 = time.time() print(time2-time1) #使用cal_2计算欧氏距离 time1 = time.time() arr3 = cal_2(vec1) time2 = time.time() print(time2-time1) 大规模计算欧氏距离,三种方法在不同情况下速度不同。 1、如果特征数很高、样本多,则使用map快 2、如果特征数低,多,则使用np.linalg.norm(vec,axis=1) 3、如果特征很少,样本很少,则使用for

转载于:https://www.cnblogs.com/yjybupt/p/10281823.html

你可能感兴趣的文章
jQuery如何获得select选中的值?input单选radio选中的值
查看>>
设计模式 之 享元模式
查看>>
如何理解汉诺塔
查看>>
洛谷 P2089 烤鸡【DFS递归/10重枚举】
查看>>
15 FFT及其框图实现
查看>>
Linux基本操作
查看>>
osg ifc ifccolumn
查看>>
C++ STL partial_sort
查看>>
3.0.35 platform 设备资源和数据
查看>>
centos redis 安装过程,解决办法
查看>>
IOS小技巧整理
查看>>
WebDriverExtensionsByC#
查看>>
我眼中的技术地图
查看>>
lc 145. Binary Tree Postorder Traversal
查看>>
sublime 配置java运行环境
查看>>
在centos上开关tomcat
查看>>
重启rabbitmq服务
查看>>
正则表达式(进阶篇)
查看>>
无人值守安装linux系统
查看>>
【传道】中国首部淘宝卖家演讲公开课:农业本该如此
查看>>