Python学习
chixujohnny
蚂蚁金服-高级算法工程师
展开
-
Python:输出列表中成员出现的次数
最近一直在做序列模式挖掘,偶尔会用到一些小技巧,在博客上记录一下。输入:一个列表,里面有各种各样的元素,例如:['a', 'b', 'a', 'd', 'e', 'b']输出:各个成员出现的次数先上代码:mylist = ['D', 'G', 'H','D', 'G', 'H','D', 'G']myset = set(mylist) #myset是另外一个列表,里原创 2015-08-24 15:27:23 · 2637 阅读 · 0 评论 -
pandas.loc 选取指定列进行操作
今天发现用pandas里面的数据结构可以减少大量的编程工作,从现在开始逐渐积累,记录一下:使用标签选取数据:df.loc[行标签,列标签]df.loc['a':'b']#选取ab两行数据df.loc[:,'one']#选取one列的数据df.loc的第一个参数是行标签,第二个参数为列标签(可选参数,默认为所有列标签),两个参数既可以是列表也可以是单个字符,如果两个参数都为列表则原创 2016-04-08 13:31:37 · 50030 阅读 · 0 评论 -
python.zip() 多列表压缩
zip函数接受任意多个(包括0个和1个)序列作为参数,返回一个tuple列表。具体意思不好用文字来表述,直接看示例:1.示例1:x = [1, 2, 3]y = [4, 5, 6]z = [7, 8, 9]xyz = zip(x, y, z)print xyz运行的结果是:[(1, 4, 7), (2, 5, 8), (3, 6, 9)]从这个结果可以看出z转载 2016-04-07 10:35:55 · 7772 阅读 · 0 评论 -
numpy.linalg.eig() 计算矩阵特征向量
在PCA中有遇到,在这里记录一下计算矩阵的特征值个特征向量,下面给出几个示例代码:在使用前需要单独import一下>>> from numpy import linalg as LA>>> w, v = LA.eig(np.diag((1, 2, 3)))>>> w; varray([ 1., 2., 3.])array([[ 1., 0., 0.],原创 2016-04-05 11:53:07 · 75383 阅读 · 2 评论 -
numpy.cov() 计算协方差矩阵
在PCA中会用到,记录一下numpy.cov()的作用是计算协方差矩阵,下面给出几个例子>>> x = np.array([[0, 2], [1, 1], [2, 0]]).T>>> xarray([[0, 1, 2], [2, 1, 0]])>>> np.cov(x)array([[ 1., -1.], [-1., 1.]])>>> x = [原创 2016-04-05 11:45:45 · 67494 阅读 · 2 评论 -
python.map() 对列表进行映射
map函数会根据提供的函数对指定序列做映射。map函数的定义:map(function, sequence[, sequence, ...]) -> list通过定义可以看到,这个函数的第一个参数是一个函数,剩下的参数是一个或多个序列,返回值是一个集合。function可以理解为是一个一对一或多对一函数,map的作用是以参数序列中的每一个元素调用function函数,返回包含每次f转载 2016-03-31 12:53:46 · 12859 阅读 · 0 评论 -
numpy.eye() 生成对角矩阵
numpy.eye(N,M=None, k=0, dtype=)关注第一个第三个参数就行了第一个参数:输出方阵(行数=列数)的规模,即行数或列数第三个参数:默认情况下输出的是对角线全“1”,其余全“0”的方阵,如果k为正整数,则在右上方第k条对角线全“1”其余全“0”,k为负整数则在左下方第k条对角线全“1”其余全“0”。>>> np.eye(2, dtype=int)原创 2016-03-30 10:31:05 · 66892 阅读 · 0 评论 -
Python遍历文件夹
最近做文本聚类要扫描大量的文本,因此,需要遍历文件夹和子文件夹下面的大量文件,记录一下python是如何实现的。# python遍历文件夹内所有文件,返回文件名即后缀import osfor filename in os.listdir(r'/Users/John/Documents/NLPStudy/tc-corpus-train/C3-Art/'): print fil原创 2016-06-27 10:23:57 · 1028 阅读 · 0 评论 -
Python将list中的string批量转化成int/float
最近在处理词向量这块,因为平时习惯把处理的词向量保存成文件,但是txt文件读取出来的都是string格式的数字,有必要转成float型上网查了一下教程,在这记录一下:data = ['1','3.2','2']data = map(eval, data)print data不知道map函数怎么实现的,没看官方文档,反正实现了就好输出:[1, 3.2, 2]原有string格原创 2016-06-28 10:11:30 · 65396 阅读 · 6 评论 -
Python对中文字符的处理(utf-8/ gbk/ unicode)
现在在做分词的时候会处理大量有关中文字符的处理,经常输出乱码,老大让我暂时不考虑字符编码,但是为了看着爽不得不研究一下。分词系统:NLPIR因为不同的编译环境默认的汉字编码可能不一样,我的环境是OSX10.11 + Pycharm + python2.7文件第一行永远默认# coding: utf-8数据集我用的是“tc-corpus-train”这个是数据,百度一原创 2016-06-29 15:02:09 · 174352 阅读 · 10 评论 -
Python迭代器,一行一行读取文本
在处理文本的时候,首先要做的是读取一下文本文件,一般的方法如下:corpus = open('这个位置放文件绝对路径', 'r').readlines()将这个文本文件按行读取,每行一个元素放到一个list中。但是需要将整个文本文件先全部装入内存中。如果文本文件太大,不能一次性读入内存怎么办。要使用Python中的迭代器,一次读取一个成员,然后对这个成员进行某种操作就可以了。具体方原创 2016-11-07 20:18:56 · 19021 阅读 · 0 评论 -
numpy.std() 计算矩阵标准差
计算矩阵标准差>>> a = np.array([[1, 2], [3, 4]])>>> np.std(a) # 计算全局标准差1.1180339887498949>>> np.std(a, axis=0) # axis=0计算每一列的标准差array([ 1., 1.])>>> np.std(a, axis=1) # 计算每一行的标准差array([ 0.5, 0.5])原创 2016-04-09 18:01:33 · 99986 阅读 · 0 评论 -
numpy.mean() 计算矩阵均值
计算矩阵的均值>>> a = np.array([[1, 2], [3, 4]])>>> np.mean(a) # 将上面二维矩阵的每个元素相加除以元素个数(求平均数)2.5>>> np.mean(a, axis=0) # axis=0,计算每一列的均值array([ 2., 3.])>>> np.mean(a, axis=1) # 计算每一行的均值array([ 1.5, 3原创 2016-04-09 17:50:37 · 129367 阅读 · 1 评论 -
Python垃圾回收机制
引用计数Python默认的垃圾收集机制是“引用计数”,每个对象维护了一个ob_ref字段。它的优点是机制简单,当新的引用指向该对象时,引用计数加1,当一个对象的引用被销毁时减1,一旦对象的引用计数为0,该对象立即被回收,所占用的内存将被释放。它的缺点是需要额外的空间维护引用计数,不过最主要的问题是它不能解决“循环引用”。什么是循环引用?A和B相互引用而再没有外部引用A与B中的任何一转载 2016-03-28 09:44:56 · 493 阅读 · 0 评论 -
Python:string是否只有某一类字符
本文专注于寻找string中是否某类字符的问题 string.isdecimal() 是否只包含十进制数字,True or False(不知为什么PyCharm+python2.7无效)string.isdigit() 是否只包含数字,True or Falsestring.isnumeric() 是否只包含数字字符,True or False(不知为什么PyCharm+pyt原创 2015-12-11 09:43:42 · 668 阅读 · 0 评论 -
Python:字符串分割
最常用的字符串分割方法莫过于string.split(str)函数了其中str表示依据什么字符进行分割比如:s = 'ab=3's.split('=')含义为依据'='为字符串分割输出的结果为:['ab','3']分割完存入列表中,‘=’已经不见了还有一个函数是将string分割成两半函数:string.partition(str)参数str表示依据什么字原创 2015-12-11 10:00:00 · 1106 阅读 · 0 评论 -
Python:string.count()返回str在string里面出现的次数
最近代码中对字符串的操作比较多,因此送上一系列字符串操作窍门python的string.count(str, begin=0, end=len(string)函数用于返回str在string中出现的次数string为待检测的字符串,如:s='this is a new technology,and I want to learn this.'参数1:str为待识别字符串,可以为原创 2015-12-11 09:18:50 · 20375 阅读 · 0 评论 -
Python: range()与xrange()区别
range()和xrange()都是Python提供的内建函数,他们的作用是在for循环中为迭代器提供一个循环的范围。例如:for i in range(len(list))但是Python中还提供了xrange()内建函数,那么它与range()函数有什么区别呢?当你有一个很大范围的列表时,使用xrange()函数更为合适,因它不会在内存中创建列表的完整拷贝,并且只能应用在for原创 2015-12-14 21:20:49 · 804 阅读 · 0 评论 -
Python:浅拷贝与深拷贝copy.deepcopy()
Python中,对象的赋值实际上是简单的对象引用。也就是说,当你创建一个对象,然后把它复制给另一个变量的时候,Python并没有拷贝这个对象,而是拷贝了这个对象的引用。如果用C语言的角度,相当于只是将地址进行了传递,虽然两个变量名不一样,但是实际的地址却是一样的。但Python并没有引入有关地址的概念,而是用的id(跟C语言的地址是一个意思,只不过不是底层的东西而已)我写过的一个算法中原创 2015-12-17 13:11:32 · 7709 阅读 · 0 评论 -
Python readline()与readlines()区别
.readline() 和 .readlines() 之间的差异是后者一次读取整个文件,象 .read() 一样。.readlines() 自动将文件内容分析成一个行的列表,该列表可以由 Python 的 for ... in ... 结构进行处理。另一方面,.readline() 每次只读取一行,通常比 .readlines() 慢得多。仅当没有足够内存可以一次读取整个文件时,才应该使用 .re原创 2016-03-29 16:26:03 · 928 阅读 · 0 评论 -
raw_input() 与 input()的区别
首先强调一下,我在笔试编程题的时候被这个坑过!请大家好好学习raw_input和input两个均是 python 的内建函数,通过读取控制台的输入与用户实现交互。但他们的功能不尽相同。下面举两个例子,来说明两者使用上的不同。例子1Python 2.7.5 (default, Nov 18 2015, 16:26:36) [GCC 3.4.5 20051201 (Red Hat 3转载 2016-04-01 13:26:16 · 666 阅读 · 1 评论 -
Pyhton: abs() 函数
abs(i)输入i:正数、负数、长整形、浮点数abs(-1.2) #返回 1.2 abs(1.2) #返回 1.2 abs(-11216.5) #返回 11216.5 abs(11216.5) #返回 11216.5注意:参数i可以是正数也可以是负数,只会去绝对值不会做调整原创 2016-03-26 14:49:24 · 811 阅读 · 0 评论 -
python.enumerate() 同时遍历索引+内容
今天看源码的时候看到这样一段:for i, score in enumerate(top_scores):不知道是什么意思就查了一下手册,手册是这么说的:enumerate()函数可以同时取出列表(元组)中的成员的索引和内容也就是说采用原始的办法,上面的代码应该这么的写:for i in range(len(top_scores)): index = i ite原创 2016-04-12 15:56:54 · 3499 阅读 · 0 评论 -
python.format() 格式化字符串
这个功能是python2.6及之后才引进的功能,今天看源码遇到的,记录一下:语法它通过{}和:来代替%。“映射”示例通过位置In [1]: '{0},{1}'.format('kzc',18) Out[1]: 'kzc,18' In [2]: '{},{}'.format('kzc',18) Out[2]: 'kzc,18' In [3]: '{1},{0},{1}转载 2016-04-13 09:09:26 · 834 阅读 · 0 评论 -
Python中的 .join()用法
Python中的 .join() 函数经常被大家使用到,之前面试的时候也被问到过,在这里记录一下:这个函数展开来写应该是str.join(item),join函数是一个字符串操作函数str表示字符串(字符),item表示一个成员,注意括号里必须只能有一个成员,比如','.join('a','b')这种写法是行不通的举个例子:','.join('abc')上面代码的含义是原创 2016-11-23 10:45:45 · 152310 阅读 · 23 评论