台大Machine Learning 2017Fall HW0字数统计和图片淡化 解答

这是台大李宏毅教师Machine Learning 2017Fall课程 的第0次的作业HW0

课程主页如下:台大Machine Learning 2017Fall 感兴趣的可以去学习下,主页提供了教学ppt和教学视频。

HW0有2个问题:

Q1:出现字数统计。

1.读取words.txt中的所有英文单词,单词由<space>分隔。

2.按照单词出现的次数,给予编号(0,1,2)。

3.统计单词出现的次数。

4.得到次数和编码输出至Q1.txt,每一行都为:

<单词><space><编号><space><出现次数>

5.单词考虑大小写,Ntu和ntu为不同单词

例子:

输入words.txt 中为 ntu ml mlds ml ntu ntuee

要求输出的Q1.txt:

ntu 0 2

ml 1 2

mlds 2 1

ntuee 3 1

下面附上我的python解答程序

# -*- coding: utf-8 -*-
from collections import OrderedDict

with open('words.txt','r') as f:
    instr = f.read()
    instr = instr.split()
    od = OrderedDict()
    for i in instr:
        if i in od:
            od[i]+=1
        else:
            od[i]=1
    cnt = 0
    #打印出来
    #for k,v in od.items():
    #    print k,cnt,v
    #    cnt+=1
    with open('Q1.txt','w') as w:
        for k,v in od.items():
            tmp = str(k)+" "+str(cnt)+" "+str(v)+"\n"
            w.write(tmp)

不使用OrderDict的话,可以这样来写。

# -*- coding: utf-8 -*-

with open('words.txt','r') as f:
    instr = f.read()
    instr = instr.split()
    d = dict()
    l = list()#额外的list存储字符串的顺序信息
    for i in instr:
        if i not in l:
            l.append(i)
        if i in d:
            d[i]+=1
        else:
            d[i]=1
    cnt = 0
    # #打印出来
    # for item in l:
    #     print(item,cnt,d[item])
    #     cnt+=1
    with open('Q1.txt','w') as w:
        for item in l:
            tmp = item+" "+str(cnt)+" "+str(d[item])+"\n"
            w.write(tmp)



Q2:图片淡化

1.读取westbrook.jpg

2.把每个pixel的RGB数值都减半(ex: (122, 244, 245)->(61, 122, 122)),再将图片输出为Q2.jpg

3.RGB数值去掉小数点。

要求效果如下:

  

下面附上我的python解答程序

# -*- coding: utf-8 -*-

from PIL import Image

im = Image.open("westbrook.jpg")
pix = im.load()
# 获得图像尺寸:
w, h = im.size
newim = Image.new("RGB",(w,h))
for i in range(w):
    for j in range(h):
        r, g, b = pix[i,j]# pix[i,j]为tuple
        newim.putpixel((i,j),(r//2,g//2,b//2))
newim.save('Q2.jpg', 'jpeg')


参考文献:

1. http://www.cnblogs.com/webFuckeeeer/p/4536776.html

2. https://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/00140767171357714f87a053a824ffd811d98a83b58ec13000

3. https://www.zhihu.com/question/29807693

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值