• 人脸识别测试数据分析


    一个人脸识别研究小组对若干名学生做了人脸识别的测试,将测试结果写入到一个文件 dir_50.txt 中,每一行是一张照片的识别结果+“_照片编号”+“.jpg”的字符串组合,示例如下:

    1. ['1709020621', '0']_116.jpg
    2. ['1709020621']_115.jpg
    3. ['1770603107', '1770603105', '0', '0']_1273.jpg

    其中,识别结果是一个列表形式的字符串,方括号中是识别出的学生学号字符串,如果识别出了照片中的多个人,就会包含多个学号字符串;如果检测到了一个人脸但没有识别出学号,则以字符串‘0’表示;测试过程中,一个学生可能被抓拍到多张照片中,所以学生的学号会出现在多行信息中。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬
    使用字典和列表进行数据分析,获取实际参加测试的学生人数和人均被检测次数。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬
    (1)读入 dir_50.txt 文件的内容,处理每一行信息。将其中的学号内容以列表形式保存,丢掉‘0’的字串;照片编号作为字典的关键字,学号列表作为字典的值。转换后示例如下:

    1. '116':[1709020621]
    2. '115':[1709020621]
    3. '117':[1709020621]
    4. '1273':[1770603107,1770603105]

    (2)将该字典中的学号提取出来,构造另一个字典,以学号作为字典的关键字,累计学号出现的次数,将累计值作为字典的值。格式示例如下:

    1. '1709020621':3
    2. '1770603107':1
    3. '1770603105':1

    (3)累计字典中关键字的个数,即为实际参加测试的学生人数;累加每个关键字对应的值,即为所有学号测试次数;所有学号测试次数与实际测试人数之比,即为人均被测次数。将实际参加测试人数和人均被测次数显示输出在屏幕上。
    示例1:

    输入: 从文件dir_50.txt读入
    输出: "实际参加测试的人数是:11"
         "人均被测次数是:2.5"

    解答:
    方法一

    1. f=open('dir_50.txt','r',encoding='utf-8')
    2. lines=f.readlines()
    3. f.close()
    4. d={}
    5. for line in lines:
    6. line=line.split('_')
    7. k=line[1][:-5]
    8. v=[]
    9. for c in eval(line[0]):
    10. if c !='0':
    11. v.append(c)
    12. d[k]=v #第一问结束
    13. d1={}
    14. for i in d:
    15. for j in d[i]:
    16. d1[j]=d1.get(j,0)+1 #第二问结束
    17. s=0
    18. for t in d1:
    19. s=s+int(d1[t])
    20. print("实际参加测试的人数是:{}".format(len(d1)))
    21. print("人均被测次数是:{:.1f}".format(s/len(d1))) #第三问结束

    方法二:

    1. f=open('dir_50.txt','r',encoding='utf-8')
    2. lines=f.readlines()
    3. f.close()
    4. d={}
    5. for line in lines:
    6. line=line.split('_')
    7. k=line[1][:-5]
    8. v=[]
    9. for c in eval(line[0]):
    10. if c !='0':
    11. v.append(c)
    12. d[k]=v #第一问结束
    13. d1={}
    14. for i in d:
    15. for j in d[i]:
    16. d1[j]=d1.get(j,0)+1 #第二问结束
    17. s=0
    18. for t in d1:
    19. s=s+int(d1[t])
    20. print("实际参加测试的人数是:{}".format(len(d1)))
    21. print("人均被测次数是:{:.1f}".format(s/len(d1))) #第三问结束

  • 相关阅读:
    java Map遍历的5种方法和一些基本使用
    突如其来的第一个1024要笑着过
    探秘前后端开发世界:猫头虎带你穿梭编程的繁忙街区,解锁全栈之路
    Mysql某年根据月份分组统计,没有的为0
    Android JetPack~ DataBinding(数据绑定)(一) 集成与使用
    Roson的Qt之旅 #120 QNetworkCacheMetaData详细介绍
    【Java并发编程】——线程池
    R的作图- -lm拟合结果图解释
    【手把手带你学会KMP算法】
    Python之三大基本库——Numpy(1)
  • 原文地址:https://blog.csdn.net/greatau/article/details/134089635