Tagged: Python

NumPy学习笔记(二) 0

NumPy学习笔记(二)

nda­r­ra­y的几个常用属性: sha­pe: 代表一个array的形态,是一个向量还是一个矩阵,抑或是一个更复杂的向量组。 ndim: 代表这个a­r­ra­y的维度 size: 在ar­ra­y中拥有的元素数量 ite­msi­ze: 这个a­r­ra­y中每一个元素所需要占的字节数 nbytes: 这个array的总字节数(=itemsize*size) real: 代表一个a­r­ra­y中所有元素的实数部分 imag: 同理,代表一个array中所有元素的虚数部分 flat: 将这个array整理成一维的,可以索引的一系列的元素组合。它实际上是通过iterator实现的,我们可以通过for x in array.flat来取得到所有的元素 T: 矩阵转置,同transpose()方法 一些比较有用的方法: toli­st(): 将ar­ra­y转化成一个Python中的li­st对象 item(*args): 取得某一位置的元素 dump(file): 将这个对象序列化至文件。同cPickle中的dump作用 dumps(): 将序列化的结果通过字符串加以输出 一些关于A­r­ra­y的形态操作: resha­pe(): 改变a­r­ra­y的形态…

0

Python Challenge Level 6

感觉变态程度越来越高了…… 入口地址:http://www.pythonchallenge.com/pc/def/channel.html 进去之后,一支巨大的拉链映入眼帘。根据以往经验,查看源代码。分析了一下,只有一个内容有用: <!– <– zip –> 根据那个拉链,再根据这个zip,看起来这道题跟zip关系十分之大。关键问题是怎么利用zip呢?百思不得其解。后来经过若干尝试,终于发现了原来隐藏的内容在channel.zip中。下载了这个文件,发现了一堆文件,里面又是指向下一个文件名的编号。和前几次中urllib的那回有异曲同工之处。打开readme文件: welco­me to my zipped list. hint1: sta­rt from 90052 hint2: answer is insi­de the zip 给了初始值,也给了暗示,答案在zip文件中。。按照当时写urllib的样子,写了这个循环的程序。 这里用到了python中的zip处理模块:zipfile。调用一个zip文件,可以通过zipfile.ZipFile()来打开;然后可以使用namelist()取得到所有zip文件中的文件名。infolist()可以得到关于zip的一些信息,另外通过read/write函数,可以读取、写入zip文件中的内容。 impo­rt re impo­rt zipfi­le value,n = 90052,1 print “ini­tial…

NumPy学习笔记(一) 1

NumPy学习笔记(一)

最近在学习scipy。在理解scipy之前,numpy作为scipy基本的模块之一,是不得不去理解掌握的。先总结一下numpy部分的内容吧。接下来学习scipy,最后是pylab和Matplotlib。 介绍 Numpy是一个Python的扩展模块,通过使用NumPy,我们可以进行科学计算。NumPy提供了矩阵、线性代数、傅里叶变换等的解决方法。 NumPy包含: N维矩阵对象 线性代数运算功能 傅里叶变换 For­t­ran代码集成的工具 C++代码集成的工具 NumPy提供了两种基本的对象:ndarray(N-dimensional array object)和 ufunc(universal fun­ction object)。前者为一个n维的矩阵在Python中的存储对象,它是一类同类型的对象(如int、bool、unicode、str等等)的集合。 下载 为了使用NumPy,首先要有Python。然后下载NumPy的包,即可。 Python 2.5: http://www.python.org/download/releases/2.5.2/ NumPy: http://numpy.scipy.org/ 使用 安装好后,首先引入模块: »> from numpy impo­rt * 创建一个矩阵 »> a=array([[1,2,3],[4,5,6]]) »> a.shape…

0

Python Challenge Level 5

r颇为变态的一道题。。 程序入口:http://www.pythonchallenge.com/pc/def/peak.html 文中强调:pronounce it… 把它发音读出来。通过观察源代码,发现它大量提到了 Peak hell 这个词。原来并没有接触过pickle,所以在这里费了半天劲,后来还是通过观察banner.p这个文件,发现很多存储的内容,很像序列化的东西。通过搜索后才确定是这个模块。 pickle是一个python的标准模块,几乎可以将任何一个Python对象作为字符串存储。在编程的时候我们经常管它叫做Serialization,也就是序列化。但Python里面将其称之为封装(pickle)。 例如,我们可以通过如下一段代码将一个tuple存入硬盘中: impo­rt cPi­ckle as picklex=(1,2,3,4,5)f=open(‘c:\\1.txt’,‘w’)pickle.dump(x,f)f.close() 而1.txt中是如下形式的一段内容: (I1I2I3I4I5tp1. 我们没有必要理解这段文档具体的存储方式,只是知道pickle可以存储内容就好了。接下来对banner.p解包。发现结果是一个list。 然后可以求出这个list的长度是23,而且list里面还嵌套list。拍拍脑袋想想这到底是做什么用的,想不出来……又仔细观察了一下,发现这个list的深度没有超过2,看起来像个矩阵。所以想到是不是图形? 后来实验了一下,成功了,呵呵。 附上源代码: from urllib2 impo­rt urlo­penimpo­rt cPi­ckle as picklef=urlopen(‘http://www.pythonchallenge.com/pc/def/banner.p’)result=pickle.Unpickler(f).load()print len(result) buf = ”for line in resu­lt:   …

Python Challenge Level 4 0

Python Challenge Level 4

Entry: http://www.pythonchallenge.com/pc/def/linkedlist.php 此题开始变态起来了,用到了linkedlist.php.… 思路: 点击中间的大图片,发现给了一个参数nothing,现在是12345。并告之下一个数是92512。把nothing的值替换为92512,则得到了下一个值为64505。周而复始。 这道题就是要我们用Python实现递推地找到下一个数的值,直到最后出现答案。手工做就会疯掉的。。。 需要使用Python的u­r­lli­b库了。。 还有一个问题就是如何去匹配得到的内容中的数字。观察发现每一页的内容是这样的: and the next nothing is xxxxx 也就是说是一个以数字结尾的正则表达式。我们可以用$符号匹配结尾,用\d匹配数字,用+匹配至少一个字符。这样pattern就是:(\d+)$ 另外到后来很变态。。网页中间突然断掉了,然后给出让把得到的结果除以二继续。。 加起来以后执行了208次,崩溃啊~这要是手动查找…… 源代码: from urllib impo­rt urlo­pen impo­rt re   next=‘12345’ next=‘46059’ #the 198th times   for n in…

Python Challenge Level 3 1

Python Challenge Level 3

Entry: http://www.pythonchallenge.com/pc/def/equality.html Requi­re­ment: One sma­ll letter, sur­roun­ded by EXACTLY three big body­gua­r­ds on each of its sides. 思路: 要求是找出加在三个大写字母中间的一个小写字母。这个小写字母左右两个方向都有三个大写字母。一看就知道应该用正则表达式解决,那么这个正则表达式怎么写呢? 有且仅有一个小写字母:[a-z] 有且仅有三个大写字母:[A-Z]{3} 那么这个­Re­gu­lar Expression的Pattern就是:[A-Z]{3}[a-z][A-Z]{3} ……………… 不对。。在此我犯了一个小错误。上述表达式不能考虑到这种情况:ABCDaABCD。即三个大写字母再外侧是什么,也需要考虑进去。它们不应该是大写字母了。 所以还应该加上非大写字母的Pattern:[^A-Z] So.… Pattern: [^A-Z][A-Z]{3}[a-z][A-Z]{3}[^A-Z] 源代码: con­tent=”’.…..”’   impo­rt re…

Python Challenge Level 2 0

Python Challenge Level 2

http://www.pythonchallenge.com/pc/def/ocr.html 查看页面源代码后,发现了一堆乱码。。有一句话很重要:find rare cha­ra­cters in the mess below。题目是要我们在这堆乱码中找出仅有的几个字符。。 string模块里有个isalpha函数,来确定一个字符是否是字母。这次派上用场了。 源代码: con­tent=”’.…..”’   impo­rt string result=[c for c in con­tent if c.isalpha()] print string.join(result,”)con­tent=”’.…..”’ impo­rt string result=[c for c in con­tent if c.isalpha()] print string.join(result,”)…

初学者的差距 [Python Challenge Level 1] 0

初学者的差距 [Python Challenge Level 1]

学习Python的时候,挑战Python Cha­llen­ge。http://www.pythonchallenge.com/pc/def/map.html 我的源代码是这样的: content=”’g fmnc wms bgblr rpylqjyrc gr zw fylb. rfyrq ufyr amkn­sr­cpq ypc dmp. bmg­le gr gl zw fylb gq glcdd­ga­g­clr ylb rfyr’q ufw rfgq rcvr gq qm jmle. sqg­le qrpgle.kyicrpylq() gq…

BUSY Days come up"> <span class=BUSY Days come up" data-hu-post-id="5ba45fc3e6fff" /> 1

BUSY Days come up">BUSY Days come up

最近一段时间,觉得时间很不够用。有太多的事情需要去做,太多的知识需要去学习。每天,经常是一到了公司,就开始忙活起来,直到中午吃饭;以前的中午,大多和同事们去打打桌面足球,而现在除了简单的休息,就要继续学习,继续做事情了。 最近的工作任务虽说不太多,但是也比较繁杂,占据了一部分时间。但最大头还是学习。参加了公司的Learning Group,学习Python,学习NLP;自己也在Unix-Center.net上开了一门跟自己的工作蛮贴近的Unix Shell方面的课程。每周都要花掉不少时间来准备教程。再加上学校的综合实践,自己接的两个项目……快疯掉了。。。。 有时候就想,忙死算了…… 虽然事情是有个轻重缓急的,但是哪个似乎都耽搁不起。。要么是公司的事情,要么是学校的事情,更要么就是接的项目。。把我劈成两个人来完成该多好啊。。 另外,在学习NLP时,发现自己的概率知识又忘掉了很多,需要恶补一下了。 ======================= 对了,再补充一下,9月20日在本部有个Software Free­dom Day的活动,我有个关于Open Source的Presentation,欢迎大家去啊,嘿嘿。具体地点和时间还不清楚。