Python语言学习笔记(六)

"Python学习笔记"

Posted by jhljx on November 20, 2017

目录

1. Python2向文件中写入Unicode字符

numpy中eye和identity的区别

两个函数的原型为: np.identity(n, dtype=None) np.eye(N, M=None, k=0, dtype=<type ‘float’>); np.identity只能创建方形矩阵 np.eye可以创建矩形矩阵,且k值可以调节,为1的对角线的位置偏离度,0居中,1向上偏离1,2偏离2,以此类推,-1向下偏离。值绝对值过大就偏离出去了,整个矩阵就全是0了。

python numpy矩阵信息,shape,size,dtype

import numpy as np  
from numpy import random  
matrix1 = random.random(size=(2,4))  
#矩阵每维的大小  
print matrix1.shape  
#矩阵所有数据的个数  
print matrix1.size  
#矩阵每个数据的类型  
print matrix1.dtype

pandas read_csv参数详解

https://www.cnblogs.com/datablog/p/6127000.html 找一些重要参数

pandas dataframe按列取

  • 按列名取数。 取单列frame1[‘省份’]或者frame1.省份; 取多列frame1[[‘省份’,’总人口’]],如图

  • 按位置取数。 frame1.iloc[:,1]frame1.iloc[:,[1,2]],如图

  • 按位置取数,也是可以使用表达式的,例如lambda函数,结果如下

https://jingyan.baidu.com/article/f96699bbf6fc95894e3c1bab.html

python中的 os.mkdir和os.mkdirs

创建目录 在Python中可以使用os.mkdir()函数创建目录(创建一级目录)。 其原型如下所示: os.mkdir(path) 其参数path 为要创建目录的路径。 例如要在D盘下创建hello的目录

import os os.mkdir(‘d:\hello’) 可以使用os.makedirs()函数创建多级目录。 其原型如下所示: os.makedirs(path) 其参数path 为要创建目录的路径。 如在D盘下创建books的目录,books目录下在创建book目录 import os os.makedirs(‘d:\books\book’) 删除目录 在Python中可以使用os.rmdir()函数删除目录。 其原型如下所示: os.rmdir(path) 其参数path 为要删除的目录的路径。 例如把D盘下的hmm的目录删除 import os os.rmdir(‘d:\hmm’) 删除多级目录 在Python中可以使用os.removedirs()函数删除多级目录。 其原型如下所示: os.removdirs(path) 其参数path 为要删除的多级目录的路径。 import os os.removedirs(‘d:\books\book’) #注意:要删除的目录必须是空目录,, 删除文件 在Python中可以使用os.remove()函数删除文件(注意一定是一个文件)。 其原型如下所示: os.remov(path) 其参数path 为要删除的文件的路径。 如删除D盘下books目录下book目录中的book.txt的文件 import os os.remove(‘d:\books\book\book.txt’) 遍历目录 在Python中可以使用os.walk()函数遍历目录。 其原型如下所示: os.walk(path) 其参数path 为要遍历的目录,遍历path,返回一个对象,他的每个部分都是一个三元组 (‘目录x’,[目录x下的目录list],目录x下面的文件) 。 如: a=os.walk(‘d:\books’) def fun(): for i in a: print i fun() (‘d:\books’, [‘book’], [‘aa.txt’]) (‘d:\books\book’, [ ], [ ]) 判断是否为目录 在Python中可以使用os.path.isdir()函数判断某一路径是否为目录。 其函数原型如下所示: os.path.isdir(path) 其参数 path为 要进行判断的路径。如果是则返回TRUE,否则返回FALSE。 判断是否为文件 在Python中可以使用os.path.isfile()函数判断某一路径是否为文件。其函数原型如下所示。 os.path.isfile(path) 其参数path为要进行判断的路径。如果是则返回TRUE,否则返回FALSE。

if(not os.path.exists(output_dir_path)): os.mkdir(output_dir_path) for file in os.listdir(input_dir_path): file_path = os.path.join(input_dir_path, file) if os.path.isdir(file_path): print(‘file_path: ‘ + file_path) output_file_path = os.path.join(output_dir_path, file) if(not os.path.exists(output_file_path)): os.mkdir(output_file_path) for inner_file in os.listdir(file_path): res_list = os.path.splitext(inner_file) if res_list[1] == ‘.csv’: print(res_list[0]) inner_file_path = os.path.join(file_path, inner_file) outer_file_path = os.path.join(output_file_path, inner_file) print(inner_file_path)

Python中pop和remove方法的区别

python list pop()方法: pop() 函数用于移除列表中的一个元素(默认最后一个元素),并且返回该元素的值。 list.pop(obj=list[-1]) 参数是需要移除列表元素的下标(index),返回的是从列表中移除的元素对象。函数执行完list中的列表元素变少。

例子如下:

aList = [123, 'xyz', 'zara', 'abc']
print "A List: ", aList.pop()
print "B List: ", aList.pop(2)

# output:
# A List: abc
# B List: zara

python list remove()方法: remove()函数用于移除列表中某个值出现的第一个匹配项 list.remove(obj) remove方法没有默认参数,因此必须要传进一个参数

例子如下:

x = ['a', 'b', 'a', 'c', 'd']
x.remove('a')
print x

#-------------
#result:
#['b', 'a', 'c', 'd']

##Python2 list转numpy matrix

import numpy as np
>>> xss = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
>>> mtx = np.matrix(xss)
>>> mtx
matrix([[1, 2, 3],
        [4, 5, 6],
        [7, 8, 9]])

##Python2 numpy flatten a是个矩阵或者数组,a.flatten()就是把a降到一维,默认是按横的方向降

>>> a = np.array([[1,2], [3,4]])
>>> a.flatten()
array([1, 2, 3, 4])
>>> a.flatten('F') #按竖的方向降
array([1, 3, 2, 4])

那么a.flatten().A又是什么呢? 其实这是因为此时的a是个矩阵,降维后还是个矩阵,矩阵.A(等效于矩阵.getA())变成了数组。 例子如下:

>>> from numpy import *
>>> a = [[1, 3], [2, 4], [3, 5]]
>>> a = mat(a)
>>> y = a.flatten()
>>> y
matrix([[1, 3, 2, 4, 3, 5]])
>>> y = a.flatten().A
>>> y
array([[1, 3, 2, 4, 3, 5]])
>>> shape(y)
(1, 6)
>>> y = a.flatten().A[0]
>>> shape(y)
(6, )
>>> y
array([1, 3, 2, 4, 3, 5])

numpy.chararray.flatten(order=’C’) Return a copy of the array collapsed into one dimension. Parameters: order:{‘C’,’F’,’A’,’K’},optional ‘C’ means to flatten in row-major (C-style) order. ‘F’ means to flatten in column-major (Fortran- style) order. ‘A’ means to flatten in column-major order if a is Fortran contiguous in memory, row-major order otherwise. ‘K’ means to flatten a in the order the elements occur in memory. The default is ‘C’.

numpy.ravel()与numpy.flatten()的区别

两个函数都是将多维数组降为一维,不同点在于numpy.flatten()返回一份拷贝,对拷贝所做的修改不会影响原始矩阵,而numpy.ravel()返回的是视图(view),会影响原始矩阵。

numpy.matrix.A

Return self as an ndarray object. Equivalent to np.asarray(self).

Parameters: None Returns: ret: ndarray

>>> x = np.matrix(np.arange(12).reshape((3,4)))
>>> x
matrix([[0, 1, 2, 3],
		[4, 5, 6, 7],
		[8, 9, 10, 11]])
>>> x.getA()  #x.A
array([[0, 1, 2, 3],
	   [4, 5, 6, 7],
	   [8, 9, 10, 11]])

numpy.shape(a)会返回一个array的维度tuple。 numpy.reshape(a, newshape, order=’C’)会将数组变成一个新的形状,而不改变它的数据。 其中,newshape参数为整数值或整数元组。新的形状应该兼容于原始形状。如果是一个整数值,表示一个一维数组的长度;如果是元组,一个元素值可以为-1,此时元素值表示为指定,此时会从数组的长度和剩余的维度推断出。 返回值为一个新的视图对象,与原数组共用内存。 形状变化的原则是数组元素不能发生改变,即数组元素总个数不能变化。

np.reshape(a, newshape),也等价于ndarray.reshape(newshape)。

a = np.array([[1,2,3], [4,5,6]]) np.reshape(a, (3,-1)) # the unspecified value is inferred to be 2 array([[1, 2], [3, 4], [5, 6]]) -1表示我懒得计算该填什么数字,由python通过a和其他的值3推测出来。

作者:Lovecanon 链接:https://www.zhihu.com/question/52684594/answer/134039079 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

ndarry.T Same as self.transpose(), except that self is returned if self.ndim < 2.

>>> x = np.array([[1, 2], [3, 4]])
>>> x
array([[1, 2],
	   [3, 4]])
>>> x.T
array([[1, 3],
	   [2, 4]])

Python hasattr函数是啥? 描述 hasattr() 函数用于判断对象是否包含对应的属性。 语法 hasattr 语法: hasattr(object, name) 参数 object – 对象。 name – 字符串,属性名。 返回值 如果对象有该属性返回 True,否则返回 False。

numpy nonzero()

python set构造: for splitVal in set(dataSet[:, featIndex]): TypeError: unhashable type: ‘matrix’ for splitVal in set(dataSet[:, featIndex].tolist()[0]):

注意a.tolist()与a.T.tolist()不同

a = np.mat([[1],[2],[3],[4],[5],[6],[7],[8],[9],[10]]) a matrix([[ 1], [ 2], [ 3], [ 4], [ 5], [ 6], [ 7], [ 8], [ 9], [10]]) np.shape(a) (10, 1) a.T matrix([[ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]]) a.tolist() [[1], [2], [3], [4], [5], [6], [7], [8], [9], [10]] a.T.tolist() [[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]]

type(obj).name == ‘dict’

lSet[:,-1]为numpy matrix,tree[‘left’]为num,power之后仍为matrix,sum之后为一个num sum(power(lSet[:,-1] - tree[‘left’], 2))

pandas获取dataframe的列名:list(df.columns.values) 获取索引的值:list(df.index.values) 获取索引名称:df.index.name

其中rawDat[:0]为200*1的numpy matrix reDraw.a.scatter(reDraw.rawDat[:,0], reDraw.rawDat[:,1], s=5) 会出现:ValueError: Masked arrays must be 1-D 应改为如下的形式: reDraw.a.scatter(reDraw.rawDat[:,0].flatten().A[0], reDraw.rawDat[:,1].flatten().A[0], s=5) 或者rawDat[:,0].tolist()还是rawDat[:,0].T.tolist()??

re.match re.compile re.findall

intertools.count(1)

urlparse.urljoin() urlparse.urlparse(url).netloc

urllib2.Request urllib2.build_opener() urllib2.urlopen(request).read()