python常用函数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python常用函数相关的知识,希望对你有一定的参考价值。
使用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常用函数的主要内容,如果未能解决你的问题,请参考以下文章