淘优惠

淘优惠

自学编程学java还是python好 少儿编程自学python还是scratch

双十一活动 0

淘宝搜:【天降红包222】领超级红包,京东搜:【天降红包222】
淘宝互助,淘宝双11微信互助群关注公众号 【淘姐妹】

编程自学还是去学校,自学编程学哪个好,编程是自学好还是有人带好,自学编程学哪个语言
2018-06-22 字符串和正则表达式小练习

试题1:

下面哪个个字符串定义有错误?

A,r'C:Program Filesfoobar'B,r'C:Program Filesfoobar'C, r'C:Program Filesfoobar'D,r'C:Program Filesfoobar\'

参考答案:B

试题2:

现有 类似'【【微信】】快速入门教程2数值与序列3列表'的字符串,字符规则如下:1,行首有英文或数字组合,中间有中文,后面又有英文或数字组合2, 要求用正则表达式提取第一个中文字段,比如上面的“快速入门教程”

参考答案

#!pythonIn?[1]:?import?re  In?[2]:?t?=?'【【微信】】快速入门教程2数值与序列3列表'In?[3]:?re.findall('^w+(..*?)w+',t,?re.ASCII) Out[3]:?['快速入门教程']
2018-06-15 睁闭眼数据分析

现有如下睁闭眼数据

#!python$?head?data.csv? #?左眼睁闭眼分数?左眼有效分数?右眼睁闭眼分数?右眼有效分数?图片名称0.123603?9.835913?9.470212?9.889045,/home/【【微信】】/code/data/common/Eyestate/ocular_base/close/1.jpg0.179463?9.816979?2.074970?9.901421,/home/【【微信】】/code/data/common/Eyestate/ocular_base/close/10.jpg0.673736?9.925372?0.001438?9.968187,/home/【【微信】】/code/data/common/Eyestate/ocular_base/close/11.jpg0.593570?9.905622?0.001385?9.986063,/home/【【微信】】/code/data/common/Eyestate/ocular_base/close/12.jpg0.222101?9.974337?0.005272?9.985535,/home/【【微信】】/code/data/common/Eyestate/ocular_base/close/13.jpg1.105360?9.978926?0.007232?9.986403,/home/【【微信】】/code/data/common/Eyestate/ocular_base/close/14.jpg5.622934?9.955227?5.909572?9.969641,/home/【【微信】】/code/data/common/Eyestate/ocular_base/close/15.jpg0.010507?9.965939?0.005150?9.990325,/home/【【微信】】/code/data/common/Eyestate/ocular_base/close/16.jpg0.043546?9.986520?0.014031?9.982257,/home/【【微信】】/code/data/common/Eyestate/ocular_base/close/17.jpg6.176013?9.848222?4.293341?9.929223,/home/【【微信】】/code/data/common/Eyestate/ocular_base/close/18.jpg

要求:

  • 筛选出未识别到人脸的数据(左眼睁闭眼分数值为-1)

  • 筛选出图片格式错误的数据(左眼睁闭眼分数值为-2)

  • 筛选出闭眼识别为睁眼的数据(图片名包含close,但是睁闭眼有一个大于9.5)

  • 筛选出睁眼识别为闭眼的数据(图片名包含open,但是睁闭眼都小于9.5)

  • 筛选出无效识别为有效的数据(图片名包含invalid,但是有效分有一个大于9.5)

  • 筛选出有效识别为无效的数据(图片名包含valid,但是有效分都小于9.5)

2018-06-14 创建三色图片

创建如下的三色图片,像素600*400

dutchflag.jpg

python图像处理参考库

#!/usr/bin/env?【【微信】】#?-*-?coding:?utf-8?-*-#?Author:xurongzhong#【【网址】】?wechat:【【微信】】?qq:【【QQ微信】】#?技术支持?钉钉群:【【QQ微信】】(可以加钉钉【【微信】】邀请加入)?#?qq群:【【QQ微信】】?【【QQ微信】】【【QQ微信】】#?【【微信】】:?2018-6-12#?dutchflag.pyfrom?PIL?import?Imagedef?dutchflag(width,?height): """Return?new?image?of?Dutch?flag.""" img?=?Image.new("RGB",?(width,?height))for?j?in?range(height):for?i?in?range(width):if?j?<?height/3: img.putpixel((i,?j),?(255,?0,?0))elif?j?<?2*height/3: img.putpixel((i,?j),?(0,?255,?0))else: img.putpixel((i,?j),?(0,?0,?255))return?imgdef?main(): img?=?dutchflag(600,?400) img.save("dutchflag.jpg")  main()
2018-06-12 数据分析:筛选列B包含列A内容的列

来自群python数据分析人工智能 521070358的提问

有类似如下结构的大量数据

#!python{'A':['Ford',?'Toyota',?'Ford','Audi'],? ?'B':['Ford?F-Series?pickup',?'Camry',?'Ford?Taurus/Taurus?X',?'Audi?test']}

现在想:
1,输出列B包含列A内容的记录
2,输出列A为Ford或Toyota的记录

参考代码:

#!python#!/usr/bin/【【微信】】#?-*-?coding:?utf-8?-*-#?Author:xurongzhong#【【网址】】?wechat:【【微信】】?qq:【【QQ微信】】#?技术支持?钉钉群:【【QQ微信】】(可以加钉钉【【微信】】邀请加入)?#?qq群:【【QQ微信】】?【【QQ微信】】【【QQ微信】】#?【【微信】】:?2018-6-012import?pandas?as?pddef?test(x): if?x['A']?in?x['B']:return?True else:return?Falsedf?=?pd.Dataframe(?{'A':['Ford',?'Toyota',?'Ford','Audi'],? 'B':['Ford?F-Series?pickup',?'Camry',?'Ford?Taurus/Taurus?X',?'Audi?test']}?)   print(df)#?输出列B包含列A内容的记录print(df[df.apply(test,?axis=1)])#?lambda?方式print(df[df.apply(lambda?x:?x['A']?in?x['B'],?axis=1)])#?输出列A为Ford或Toyota的记录print(df[df['A'].str.match('Ford|Toyota')])

执行结果:

#!python A?B 0FordFord?F-Series?pickup 1Toyota?Camry 2FordFord?Taurus/Taurus?X 3Audi?Audi?test A?B 0FordFord?F-Series?pickup 2FordFord?Taurus/Taurus?X 3Audi?Audi?test A?B 0FordFord?F-Series?pickup 2FordFord?Taurus/Taurus?X 3Audi?Audi?test A?B 0FordFord?F-Series?pickup 1Toyota?Camry 2FordFord?Taurus/Taurus?X

本节代码地址

2018-06-11 python数据机构基础面试题

生成

#!python[-0.1,0.?,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9, 1.?,1.1]

参考:

#!pythonimport?numpy?as?np  [x?/?10.0?for?x?in?range(-1,?11)] np.arange(-0.1,?1.1,?0.1)
2018-06-08 用turtle绘制长度为10像素的正方形(初级)

image.png

参考代码:

#!python#!/usr/bin/【【微信】】#?-*-?coding:?utf-8?-*-#?Author:xurongzhong#【【网址】】?wechat:【【微信】】?qq:【【QQ微信】】#?技术支持?钉钉群:【【QQ微信】】(可以加钉钉【【微信】】邀请加入)?#?qq群:【【QQ微信】】?【【QQ微信】】【【QQ微信】】#?【【微信】】:?2018-6-07from?turtle?import?* ? forward(100) left(90) forward(100) left(90) forward(100) left(90) forward(100) left(90)  exitonclick()

注意用使用【【微信】】.6.0或更高版本, 命令行执行比较好。

延伸学习

image.png

参考代码:

#!python#!/usr/bin/【【微信】】#?-*-?coding:?utf-8?-*-#?Author:xurongzhong#【【网址】】?wechat:【【微信】】?qq:【【QQ微信】】#?技术支持?钉钉群:【【QQ微信】】(可以加钉钉【【微信】】邀请加入)?#?qq群:【【QQ微信】】?【【QQ微信】】【【QQ微信】】#?【【微信】】:?2018-6-07from?turtle?import?* pensize(7) penup()goto(-200,?-100) pendown() fillcolor("red") begin_fill()goto(-200,?100)goto(200,?-100)goto(200,?100)goto(-200,?-100) end_fill() exitonclick()
2018-06-07 计算不同版本人脸识别框的重合面积

现有某图片,版本1识别的坐标为:(60, 188, 260, 387),版本2识别的坐标为(106, 291, 340, 530)))。格式为left, top, right, buttom。
请计算:公共的像素总数,版本1的像素总数,版本2的像素总数,版本1的重合面积比例,版本2的重合面积比例.

参考代码:

#!python#!/usr/bin/【【微信】】#?-*-?coding:?utf-8?-*-#?Author:xurongzhong#【【网址】】?wechat:【【微信】】?qq:【【QQ微信】】#?技术支持?钉钉群:【【QQ微信】】(可以加钉钉【【微信】】邀请加入)?#?qq群:【【QQ微信】】?【【QQ微信】】【【QQ微信】】#?【【微信】】:?2018-6-07def?get_area(pos): left,?top,?right,?buttom?=?pos left?=?max(0,?left) top?=?max(0,?top) width?=?right?-?left height?=?buttom?-?topreturn?(width*height,?left,?top,?right,?buttom)def?overlap(pos1,?pos2): area1,?left1,?top1,?right1,?buttom1?=?get_area(pos1) area2,?left2,?top2,?right2,?buttom2?=?get_area(pos2)  left?=?max(left1,?left2) top?=?max(top1,?top2) left?=?max(0,?left) top?=?max(0,?top) right?=?min(right1,?right2)? buttom?=?min(buttom1,?buttom2) if?right?<=?left?or?buttom?<=?top: area?=?0 else: area?=?(right?-?left)*(buttom?-?top) return?(area,?area1,?area2,?float(area)/area1,?float(area)/area2)  print(overlap((60,?188,?260,?387),?(106,?291,?340,?530)))

详细代码地址

执行

#!python$?【【微信】】?overlap.py? (14784,?39800,?55926,?0.3714572864321608,?0.2643493187426242)
2018-06-06 json格式转换

现有 人脸标注的海量数据,部分参见:data

要求输出:
1,files.txt

#!pythonimage_1515229323784.irimage_1515235832391.irimage_1515208991161.irimage_1515207265358.irimage_1521802748625.irimage_1515387191011.ir...

2, 坐标信息 poses.txt
文件名、left, top, right, buttom,width,height

#!pythonimage_1515229323784.ir,4,227,234,497,230,270image_1515235832391.ir,154,89,302,240,148,151image_1515208991161.ir,76,369,309,576,233,207image_1515207265358.ir,44,261,340,546,296,285 ...

3,比对文件:

首先:# 后面的为序列号,从1开始递增
3 640 480 1及后面3行暂时视为固定。后面一行1 后面为4个坐标left, top, right, buttom。

#!python#?1image_1515229323784.ir 3?640?480?1 0 1 1?4?227?234?497? #?2image_1515235832391.ir 3?640?480?1 0 1 1?154?89?302?240#?3...

参考代码:

#!python#!/usr/bin/env?【【微信】】#?-*-?coding:?utf-8?-*-import?shutilimport?osimport?globimport?jsonimport?pprintimport?jsonimport?data_common  directory?=?'data'files?=?data_common.find_files_by_type(directory,'json')  i?=?1file_list?=?[] results?=?[] poses?=?[]for?filename?in?files: d?=?json.load(open(filename)) name?=?d['image']['rawFilename'].strip('.jpg') pos?=?d['objects']['face'][0]['position'] num?=?len(d['objects']['face'])if?num?>?1: print(filename) print(name) pprint.pprint(d['objects']['face']) out?=?"#?{}n{}n3?640?480?1n0n{}n".format(i,?name,?num)for?face?in?d['objects']['face']: pos?=?face['position'] top?=?round(pos['top']) bottom?=?round(pos['bottom']) left?=?round(pos['left']) right?=?round(pos['right']) out?=?out?+?"1?{}?{}?{}?{}n".format(left,?top,?right,?bottom) poses.append("{},{},{},{},{},{},{}".format(name,? left,?top,?right,?bottom,?right?-?left,?bottom?-top)) i?=?i?+?1 #print(out) file_list.append(name) results.append(out.rstrip('n'))  data_common.output_file("files.txt",file_list) data_common.output_file("results.txt",results) data_common.output_file("poses.txt",poses)

详细代码地址

2018-06-01 正则表达式及拼音排序

有某群的某段聊天记录

现在要求输出排序的qq名,结果类似如下:

#!python[...,?'本草隐士',?'jerryyu',?'可怜的樱桃树',?'叻风云',?'欧阳-深圳白芒',...]

需求来源:有个想批量邀请某些qq群的活跃用户到自己的群。又不想铺天盖地去看聊天记录。

参考资料:python文本处理库

参考代码:

#!python#!/usr/bin/【【微信】】#?-*-?coding:?utf-8?-*-#?Author:xurongzhong@【【网址】】?wechat:【【微信】】?qq:【【QQ微信】】#?技术支持?钉钉群:【【QQ微信】】(可以加钉钉【【微信】】邀请加入)?#?qq群:【【QQ微信】】?【【QQ微信】】【【QQ微信】】#?【【微信】】:?2018-6-1import?refrom?pypinyin?import?lazy_pinyin  name?=?r'test.txt'text?=?open(name,encoding='utf-8').read()#print(text)results?=?re.findall(r'(:d+)s(.*?)(d+',?text)  names?=?set()for?item?in?results: names.add(item[1])  keys?=?list(names) keys?=?sorted(keys)def?compare(char): try: result?=?lazy_pinyin(char)[0][0]except?Exception?as?e: result?=?charreturn?result  keys.sort(key=compare) print(keys)

执行示例:

1,把qq群的聊天记录导出为txt格式,重命名为test.txt

2, 执行:

#!python$?【【微信】】?qq.py? ['Sally',?'^^O^^',?'aa催乳师',?'bling',?'本草隐士',?'纯中药治疗*早泄',?'长夜无荒',?'东方~慈航',?'干金草',?'广东-曾超庆',?'红梅*?渝',?'jerryyu',?'可怜的樱桃树',?'叻风云',?'欧阳-深圳白芒',?'傥籼谩元亨',?'蜀中~眉豆。',?'陕西渭南逸清阁*无为',?'吴宁……任',?'系统消息',?'于立伟',?'倚窗望岳',?'烟霞霭霭',?'燕子',?'张强',?'滋味',?'买个罐头?吃西餐',?'【大侠】好好',?'【大侠】面向大海~纯中药治烫伤',?'【宗师】吴宁……任',?'【宗师】红梅*?渝',?'【少侠】焚琴煮鹤',?'【少侠】笨笨',?'【掌门】溆浦山野人家']

作者:python作业AI毕业设计链接:https://www.jianshu.com/p/92c7bd0189d4


python机器学习库教程——结巴中文分词

结巴分词 python,结巴分词统计词频,结巴分词词性标注,结巴分词python安装

全栈工程师开发手册 (作者:栾鹏)

python教程全解

安装:

pip install jieba

特点:

支持三种分词模式:

精确模式,试图将句子最精确地切开,适合文本分析; 全模式,把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义; 搜索引擎模式,在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。 支持繁体分词 支持自定义词典 MIT 授权协议

算法:

基于前缀词典实现高效的词图扫描,生成句子中汉字所有可能成词情况所构成的有向无环图 (DAG) 采用了动态规划查找最大概率路径, 找出基于词频的最大切分组合 对于未登录词,采用了基于汉字成词能力的 HMM 模型,使用了 【【微信】】 算法

  • jieba.cut 方法接受三个输入参数: 需要分词的字符串;cut_all 参数用来控制是否采用全模式;HMM 参数用来控制是否使用 HMM 模型
  • jieba.cut_for_search 方法接受两个参数:需要分词的字符串;是否使用 HMM模型。该方法适合用于搜索引擎构建倒排索引的分词,粒度比较细
  • 待分词的字符串可以是 unicode 或 UTF-8 字符串、GBK 字符串。注意:不建议直接输入 GBK字符串,可能无法预料地错误解码成 UTF-8
  • jieba.cut以及 jieba.cut_for_search 返回的结构都是一个可迭代的 generator,可以使用 for循环来获得分词后得到的每一个词语(unicode),或者用jieba.lcut 以及jieba.lcut_for_search 直接返回list
  • jieba.Tokenizer(dictionary=DEFAULT_DICT) 新建自定义分词器,可用于同时使用不同词典。jieba.dt 为默认分词器,所有全局分词相关函数都是该分词器的映射。
  • 使用jieba.posseg分词,可以查看分词的词性

代码示例

# encoding=utf-8import jiebaseg_list=jieba.cut("我来到北京清华大学", cut_all=True)print("Full Mode: " + "/ ".join(seg_list))  # 全模式seg_list=jieba.cut("我来到北京清华大学", cut_all=False)print("Default Mode: " + "/ ".join(seg_list))  # 精确模式seg_list=jieba.cut("他来到了网易杭研大厦")  # 默认是精确模式print(", ".join(seg_list))seg_list=jieba.cut_for_search("小明硕士毕业于中国科学院计算所,后在日本京都大学深造")  # 搜索引擎模式print(", ".join(seg_list))import jieba.posseg as pseg#查看词性words=pseg.cut("我爱北京*")for word, 【【淘密令】】:    print('%s %s' % (word, flag))

输出结果

【全模式】: 我/ 来到/ 北京/ 清华/ 清华大学/ 华大/ 大学【精确模式】: 我/ 来到/ 北京/ 清华大学【新词识别】:他, 来到, 了, 网易, 杭研, 大厦    (此处,“杭研”并没有在词典中,但是也被【【微信】】算法识别出来了)【搜索引擎模式】: 小明, 硕士, 毕业, 于, 中国, 科学, 学院, 科学院, 中国科学院, 计算, 计算所, 后, 在, 日本, 京都, 大学, 日本京都大学, 深造

添加自定义词典以便能识别专业词汇

载入词典

  • 开发者可以指定自己自定义的词典,以便包含 jieba 词库里没有的词。虽然 jieba 有新词识别能力,但是自行添加新词可以保证更高的正确率
  • 用法: jieba.load_userdict(file_name) # file_name 为文件类对象或自定义词典的路径
  • 词典格式和 dict.txt一样,一个词占一行;每一行分三部分:词语、词频(可省略)、词性(可省略),用空格隔开,顺序不可颠倒。file_name若为路径或二进制方式打开的文件,则文件必须为 UTF-8 编码。
  • 词频省略时使用自动计算的能保证分出该词的词频。

例如:

创新办 3 i云计算 5P特琳 nz台中

  • 更改分词器(默认为jieba.dt)的 tmp_dir 和 cache_file属性,可分别指定缓存文件所在的文件夹及其文件名,用于受限的文件系统。

示例自定义词典userdict.txt

云计算 5李小福 2 nr创新办 3 ieasy_install 3 eng好用 300韩玉赏鉴 3 nz八一双鹿 3 nz台中P特琳 nzEdu Trust认证 2000

示例代码

# 添加自定义专业词汇test_sent=("李小福是创新办主任也是云计算方面的专家; 什么是八一双鹿  ""例如我输入一个带“韩玉赏鉴”的标题,在自定义词库中也增加了此词为N类  ""「台中」正_不被切_。mac上可分出「石墨烯」;此r又可以分出P特琳了。")jieba.load_userdict("userdict.txt")  #从文件中添加。每行为一个词:词语 词频 词性jieb【【微信】】('石墨烯')  #直接添加词汇jieb【【微信】】('P特琳')  #直接添加词汇jieba.【【微信】】('自定义词') #直接删除词汇words=jieba.cut(test_sent)print(','.join(words))

输出结果

李小福,是,创新,办,主任,也,是,云,计算,方面,的,专家,;, ,什么,是,八,一双,鹿,,例如,我,输入,一个,带,“,韩玉,赏鉴,”,的,标题,,,在,自定义词,库中,也,增加,了,此,词为,N,类,,「,台,中,」,正_,,不,被,切_,。,mac,上,可,分出,「,石墨,烯,」,;,此r,又,可以,分出,P,特琳,了,。

  • 使用 【【微信】】(word, freq=None, tag=None)和 【【微信】】(word) 可在程序中动态修改词典。
  • 使用 suggest_freq(【【微信】】une=True) 可调节单个词语的词频,使其能(或不能)被分出来。
  • 注意:自动计算的词频在使用 HMM 新词发现功能时可能无效。

示例代码

print('/'.join(jieba.cut('如果放到post中将出错。', HMM=False)))jieba.suggest_freq(('中', '将'), True)   #true若可以就将单词分开,false若可以就将单词合并print('/'.join(jieba.cut('如果放到post中将出错。', HMM=False)))print('/'.join(jieba.cut('「台中」正确应该不会被切开', HMM=False)))jieba.suggest_freq('台中', True)print('/'.join(jieba.cut('「台中」正确应该不会被切开', HMM=False)))

输出结果

如果/放到/post/中将/出错/。如果/放到/post/中/将/出错/。「/台中/」/正确/应该/不会/被/切开「/台中/」/正确/应该/不会/被/切开

基于 TF-IDF 算法的关键词抽取

jieba.analyse.extract_tags(sentence, topK=20, withWeight=False, allowPOS=())sentence:为待提取的文本topK:为返回几个 TF/IDF 权重最大的关键词,默认值为 20withWeight:为是否一并返回关键词权重值,默认值为 FalseallowPOS:仅包括指定词性的词,默认值为空,即不筛选

示例代码

s="此外,公司拟对全资子公司吉林欧亚置业有限公司增资4.3亿元,增资后,吉林欧亚置业注册资本由7000万元增加到5亿元。吉林欧亚置业主要经营范围为房地产开发及百货零售等业务。目前在建吉林欧亚城市商业综合体项目。2013年,实现营业收入0万元,实现净利润-139.13万元。"for x, w in jieba.analyse.extract_tags(s, withWeight=True):   #sentence:待提取文本    topK:数量    withWeight:是否一并返回关键词权重值    allowPOS:仅包括指定词性的词,默认值为空,即不筛选    print('%s %s' % (x, w))

输出结果

欧亚 0.7300142700289363吉林 0.659038184373617置业 0.4887134522112766万元 0.3392722481859574增资 0.335824019852340454.3 0.254356755380851067000 0.254356755380851062013 0.25435675538085106139.13 0.25435675538085106实现 0.19900979900382978综合体 0.19480309624702127经营范围 0.19389757253595744亿元 0.1914421623587234在建 0.17541884768425534全资 0.17180164988510638注册资本 0.1712441526百货 0.16734460041382979零售 0.1475057117057447子公司 0.14596045237787234营业 0.13920178509021275

基于 【【微信】】 算法的关键词抽取

jieba.analyse.textrank(sentence, topK=20, withWeight=False, allowPOS=('ns', 'n', 'vn', 'v')) 直接使用,接口相同,注意默认过滤词性。

示例代码

for x, w in jieba.analyse.textrank(s, withWeight=True):    print('%s %s' % (x, w))

输出结果

版权声明:除非特别标注原创,其它均来自互联网,转载时请以链接形式注明文章出处。