码迷,mamicode.com
首页 > 编程语言 > 详细

【python】常用函数

时间:2018-12-01 20:21:00      阅读:167      评论:0      收藏:0      [点我收藏+]

标签:距离   +=   print   常用函数   std   range   color   .com   sum   

使用list生成dict(可指定单条长度和数据类型,splen为4即为list中每4行组成dict中一条)

def list2dict(srclist,splen,datatype):# datatype: 0-str 1-int 2-float
    dstdict={}
    for i in range(0,int(len(srclist)/splen)):
        dstdict[srclist[splen*i]]=[]
        for j in range(1,splen):
            if datatype==0:
                dstdict[srclist[splen*i]].append(srclist[splen*i+j])
            elif datatype==1:
                dstdict[srclist[splen*i]].append(int(srclist[splen*i+j]))
            elif datatype==2:
                dstdict[srclist[splen*i]].append(float(srclist[splen*i+j]))
            else:
                print please choose the datatype
                return False
    return dstdict

 

计算两个list的距离(注意不能用numpy的linalg.norm,因为用numpy的linalg.norm的话如果两个list相等就会报错(因为求了0向量的范数))

def cal_list_dist(srclist1,srclist2):
    if len(srclist1)!=len(srclist2):
        print error in cal_list_dict, len not equal!
        return False
    listerror=0
    for i in range(0,len(srclist1)):
         listerror+=pow(srclist1[i]-srclist2[i],2)
    return pow(listerror,0.5)

 

比较按行存的label的误差

例如可以比较这样的list中名称相同的训练样本的误差:

技术分享图片

 

 

 

将黄色处生成dict的间隔改为3,则可以比较这样的list

技术分享图片

 

 

import sys


def list2dict(srclist,splen,datatype):# datatype: 0-str 1-int 2-float
    dstdict={}
    for i in range(0,int(len(srclist)/splen)):
        dstdict[srclist[splen*i]]=[]
        for j in range(1,splen):
            if datatype==0:
                dstdict[srclist[splen*i]].append(srclist[splen*i+j])
            elif datatype==1:
                dstdict[srclist[splen*i]].append(int(srclist[splen*i+j]))
            elif datatype==2:
                dstdict[srclist[splen*i]].append(float(srclist[splen*i+j]))
            else:
                print please choose the datatype
                return False
    return dstdict


def cal_list_dist(srclist1,srclist2):
    if len(srclist1)!=len(srclist2):
        print error in cal_list_dict, len not equal!
        return False
    listerror=0
    for i in range(0,len(srclist1)):
         listerror+=pow(srclist1[i]-srclist2[i],2)
    return pow(listerror,0.5)

p_name=sys.argv[1]

with open(./10_10_662_withcam0/+p_name) as f:
    withcam0_list=f.read().splitlines()

with open(./10_10_662_nocam0/+p_name) as f:
    nocam0_list=f.read().splitlines()


withcam0_dict=list2dict(withcam0_list,4,2)

nocam0_dict=list2dict(nocam0_list,4,2)

sumerror=0
sumcount=0
for elem in withcam0_dict:
    if elem in nocam0_dict:
        sumerror+=cal_list_dist(withcam0_dict[elem],nocam0_dict[elem])
        sumcount+=1
print sumerror/sumcount

 

【python】常用函数

标签:距离   +=   print   常用函数   std   range   color   .com   sum   

原文地址:https://www.cnblogs.com/zealousness/p/10050595.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!