导图社区 Python模块
机器学习中常用的Python模块:PIL模块、numpy模块、pandas模块、os模块、matplotlib模块的相关内容。
编辑于2021-05-26 14:31:59Python模块
os模块
1.获取当前工作路径
1.1 os.getcwd()
2.获取文件列表
2.1 os.listdir()——直接返回指定路径下,文件和文件夹组成的列表
2.2 os.walk()——传入一个path,遍历指定路径下的所有子文件夹,获取的是由路径、文件夹列表、文件列表组成的元组。
3.判断某个文件是否存在
3.1 os.path.exists()——若文件夹存在,返回true。否则,返回False。
4.创建文件夹
4.1 os.mkdir()——创建一个新的文件夹
4.2 os.makedirs()——递归生成文件夹
5.删除文件夹
5.1 os.rmdir()——只能删除空文件夹
6.路径拼接与切分
6.1 os.path.join()——路径拼接
6.2 os.path.split()——路径切分
7.单独获取文件的绝对路径、文件名
7.1 os.path.dirname()——返回文件的绝对路径
7.2 os.path.basename()——返回绝对路径下的“文件名”
8.判断是文件or文件夹
8.1 os.path.isdir()——判断是否是文件夹
8.2 os.path.isfile()——判断是否是文件
9.其他一些操作
9.1 os.sep——返回当前操作系统的路径分隔符
9.2 os.path.getsize(文件)——获取文件大小
numpy
包含了强大的N维数组对象和向量运算
1.数组创建,用array函数将元组或列表转化成数组
import numpy as np array = np.array(((1,2,3),(4,5,6)))
创建指定长度或形状的全0数组:zeroarray = np.zeros((2,3)) 两行三列全0的矩阵
创建指定长度或形状的全1数组:onearray = np.ones((3,4),dtype = 'int64') 三行四列全1的矩阵
创建一个数组,初始内容随机,取决于内存状态:emptyarray = np.empty((3,4))
用arange函数:array = np.arange(10,31,5) 从10到30,步长是5
2.输出数组的信息,维度、形状、元素个数、元素类型
维度:array.ndim
形状:array.shape
元素个数:array.size
元素类型:array.dtype
重新定义数组形状:array1 = np.arange(6).reshahape([2,3]) 把生成的一行数组,转换成2行3列
array2 = np.array([1,2,3],[4,5,6],dtype=np.int64).reshape([3,2]) 转换成3行3列
3.数组的计算
矩阵乘法
np.dot(arr3,arr4)
每行每列求和
np.sum(arr3,axis=1)#axis=1,每行求和;axis=0,每列求和
求最大最小值,均值
np.max(arr3);np.min(arr3);np.mean(arr3)
求最大最小值的下标
np.argmax(arr3);np.argmin(arr3)
矩阵转置
arr3_tran = arr3.transpose()
矩阵转一维向量
arr3.flatten()
4.数组索引与切片
arr5 = np.arange(0,6).reshape([2,3]) print(arr5[1]) #输出矩阵的第二行 print(arr5[1],[2]) #输出矩阵第二行第三列对应的元素 print(arr5[1,2]) #同上 print(arr5[1,:]) #第二行 print(arr5[:,1]) #第二列 print(arr5[1,0:2]) #第二行前两个元素
pandas
建立在numpy基础上的高效数据分析处理库,是python的重要数据分析库
1.Series类似于一维数组的对象
import pandas as pd import numpy as np s = pd.Series(['a','b','c','d']) #默认索引是01234
可以使用index设置索引列表 s = pd.Series(['a','b','c','d','e'],index=[100,200,100,400,500])
可以用字典实例化 d = {'b':1,'a':0,'c':2} pd.series(d)
获取values和index
print(s.values)
print(s.index)
在算术运算中自动对齐不同索引的数据
做并集,并把相同索引的值做求和
2.Dataframe类似于excel或sql表
matplotlib
主要用于绘制二维图形的python库,绘图、可视化
1.用的最多的就是pyplot,显示图形
import matplotlib.pyplot as plt import numpy as np #显示matplotlib生成的图片 %matplotlib inline x = np.linspace(-1,1,50)#等差数列 y = 2*x+1 #传入x,y,通过plot()绘制出折线图 plt.plot(x,y) #显示图形 plt.show()
2.同时画两个图,用到画布
x = np.linspace(-1,1,50) y1 = 2*x+1 y2 = x**2 #生成画布 plt.figure() plt.plot(x,y1) plt.figure(figuresize(7,5)) plt.plot(x,y2) plt.show()
#两个图画一个里 plt.figure(figuresize(7,5)) plt.plot(x,y1,color = 'red',linewidth=1) plt.plot(x,y2,color = 'blue',linewidth=5) plt.xlabel('x',fontsize = 20)#字体大小是20 plt.ylabel('y',fontsize = 20) plt.show()
3.图例
plt.legend(handles=[l1,l2],labels = ['aa','bb'],loc = 'best')#找一个最好的位置放 plt.xlim((0,1))#x轴只截取一段进行显示,只截取0到1显示 plt.ylim((0,1))#y轴只截取一段显示 plt.show()
4.散点图
dots1 = np.random.rand(50) dots2 = np.random.rand(50) plt.scatter(dots1,dots2,c='red',alpha=0.5)#c表示颜色,alpha表示透明度 plt.show()
5.直方图
x = np.arange(10) y = 2**x +10 plt.bar(x,y,facecolor='#9999ff',edgecolor = 'white')#facecolor是柱的颜色,edgecolor是框的颜色 for ax,ay in zip(x,y): plt.text(ax,ay,'%.1f'%ay,ha = 'center',va = 'bottom') plt.show()
PIL
图像处理
安装
#!pip install pillow
1.展示图片,并获取图像的模式,长宽
from PIL import Image import matplot.pyplot as plt #显示matplotlib inline %matplotlib inline #读取图片 img = Image.open('/home/....jpg') #显示图片 plt.imshow(img) plt.show(img) #获取图片模式 img_mode = img.mode print(img_mode) width,height = img.size print(width,height)
2.图片旋转
#旋转图片45° img_rotate = img.rotate(45)
3.图片剪切
#剪切crop()四个参数分别是:(左上角点的x坐标、左上角点的y坐标,右下角点x坐标、右下角点y坐标) img1_crop_result = img1.crop((126,0,381,249)) #保存图片 img1_crop_result.save('/home/.....jpg')
4.图片缩放
#缩放,ANTIALIAS高质量缩放 img2_resize_result = img.resize((int(width*0.6),int(height*0.6)),Image.ANTIALIAS) print(img_resize_result.size)
5.镜像效果:左右旋转、上下旋转
#左右旋转 img3_lr = img3.transpose(Image.FLIP_LEFT_RIGHT) #上下旋转 img3_bt = img3.transpose(Image.FLIP_TOP_BOTTOW)