当前位置:文档之家› 3.python深度学习常用库

3.python深度学习常用库

Python被大量应用在数据挖掘和深度学习领域,其中使用极其广泛的是Numpy、pandas、Matplotlib、PIL等库。

numpy是Python科学计算库的基础。

包含了强大的N维数组对象和向量运算。

pandas是建立在numpy基础上的高效数据分析处理库,是Python的重要数据分析库。

Matplotlib是一个主要用于绘制二维图形的Python库。

用途:绘图、可视化PIL库是一个具有强大图像处理能力的第三方库。

用途:图像处理NumPy是使用Python进行科学计算的基础软件包。

更多学习,可参考numpy中文网:https:///1.数组创建可以使用array函数从常规Python列表或元组中创建数组。

得到的数组的类型是从Python 列表中元素的类型推导出来的。

创建数组最简单的办法就是使用array函数。

它接受一切序列型的对象(包括其他数组),然后产生一个新的含有传入数据的numpy数组。

其中,嵌套序列(比如由一组等长列表组成的列表)将会被转换为一个多维数组In[6]import numpy as np#将列表转换为数组array = np.array([[1,2,3],[4,5,6]])print(array)In[24]import numpy as np#将列表转换为数组array = np.array(((1,2,3),(4,5,6)))print(array)下面这样可以吗?In[ ]a = np.array(1,2,3,4)通常,数组的元素最初是未知的,但它的大小是已知的。

因此,NumPy提供了几个函数来创建具有初始占位符内容的数组。

•zeros():可以创建指定长度或者形状的全0数组•ones():可以创建指定长度或者形状的全1数组•empty():创建一个数组,其初始内容是随机的,取决于内存的状态In[46]zeroarray = np.zeros((2,3))print(zeroarray)In[47]onearray = np.ones((3,4),dtype='int64')print(onearray)In[48]emptyarray = np.empty((3,4))print(emptyarray)为了创建数字组成的数组,NumPy提供了一个类似于range的函数,该函数返回数组而不是列表。

In[49]array = np.arange( 10, 31, 5 )print(array)输出数组的一些信息,如维度、形状、元素个数、元素类型等In[51]array = np.array([[1,2,3],[4,5,6],[7,8,9],[10,11,12]])print(array)#数组维度print(array.ndim)#数组形状print(array.shape)#数组元素个数print(array.size)#数组元素类型print(array.dtype)重新定义数字的形状In[53]array1 = np.arange(6).reshape([2,3])print(array1)array2 = np.array([[1,2,3],[4,5,6]],dtype=np.int64).reshape([3,2]) print(array2)2.数组的计算数组很重要,因为它可以使我们不用编写循环即可对数据执行批量运算。

这通常叫做矢量化(vectorization)。

大小相等的数组之间的任何算术运算都会将运算应用到元素级。

同样,数组与标量的算术运算也会将那个标量值传播到各个元素.矩阵的基础运算:In[56]arr1 = np.array([[1,2,3],[4,5,6]])arr2 = np.ones([2,3],dtype=np.int64)print(arr1 + arr2)print(arr1 - arr2)print(arr1 * arr2)print(arr1 / arr2)print(arr1 ** 2)矩阵乘法:In[57]#矩阵乘法arr3 = np.array([[1,2,3],[4,5,6]])arr4 = np.ones([3,2],dtype=np.int64)print(arr3)print(arr4)print(np.dot(arr3,arr4))矩阵的其他计算:In[59]print(arr3)print(np.sum(arr3,axis=1)) #axis=1,每一行求和 axie=0,每一列求和print(np.max(arr3))print(np.min(arr3))print(np.mean(arr3))print(np.argmax(arr3))print(np.argmin(arr3))In[60]arr3_tran = arr3.transpose()print(arr3_tran)print(arr3.flatten())3.数组的索引与切片In[61]arr5 = np.arange(0,6).reshape([2,3])print(arr5)print(arr5[1])print(arr5[1][2])print(arr5[1,2])print(arr5[1,:])print(arr5[:,1])print(arr5[1,0:2])pandas是python第三方库,提供高性能易用数据类型和分析工具。

pandas基于numpy实现,常与numpy和matplotlib一同使用更多学习,请参考pandas中文网:https:///Padas核心数据结构:1.SeriesSeries是一种类似于一维数组的对象,它由一维数组(各种numpy数据类型)以及一组与之相关的数据标签(即索引)组成.可理解为带标签的一维数组,可存储整数、浮点数、字符串、Python 对象等类型的数据。

In[4]import pandas as pdimport numpy as nps = pd.Series(['a','b','c','d','e'])print(s)Seris中可以使用index设置索引列表。

与字典不同的是,Seris允许索引重复In[63]#与字典不同的是:Series允许索引重复s = pd.Series(['a','b','c','d','e'],index=[100,200,100,400,500]) print(s)Series 可以用字典实例化In[ ]d = {'b': 1, 'a': 0, 'c': 2}pd.Series(d)可以通过Series的values和index属性获取其数组表示形式和索引对象In[64]print(s.values)print(s.index)In[11]#与普通numpy数组相比,可以通过索引的方式选取Series中的单个或一组值print(s[100])print(s[[400, 500]])In[3]s = pd.Series(np.array([1,2,3,4,5]), index=['a', 'b', 'c', 'd', 'e']) print(s)#对应元素求和print(s+s)#对应元素乘print(s*3)Series中最重要的一个功能是:它会在算术运算中自动对齐不同索引的数据Series 和多维数组的主要区别在于,Series 之间的操作会自动基于标签对齐数据。

因此,不用顾及执行计算操作的Series 是否有相同的标签。

In[11]obj1 = pd.Series({"Ohio": 35000, "Oregon": 16000, "Texas": 71000, "Utah": 5000})obj2 = pd.Series({"California": np.nan, "Ohio": 35000, "Oregon": 16000, "Texas": 71000})print(obj1 + obj2)In[6]s = pd.Series(np.array([1,2,3,4,5]), index=['a', 'b', 'c', 'd', 'e'])print(s[1:])print(s[:-1])print(s[1:] + s[:-1])2.DataFrameDataFrame是一个表格型的数据结构,类似于Excel或sql表它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔值等)DataFrame既有行索引也有列索引,它可以被看做由Series组成的字典(共用同一个索引)用多维数组字典、列表字典生成DataFrameIn[7]data = {'state': ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada'], 'year': [2000, 2001, 2002, 2001, 2002], 'pop': [1.5, 1.7, 3.6, 2.4, 2.9]} frame = pd.DataFrame(data)print(frame)In[69]#如果指定了列顺序,则DataFrame的列就会按照指定顺序进行排列frame1 = pd.DataFrame(data, columns=['year', 'state', 'pop'])print(frame1)跟原Series一样,如果传入的列在数据中找不到,就会产生NAN值In[8]frame2 = pd.DataFrame(data, columns=['year', 'state', 'pop', 'debt'], index=['one', 'two', 'three', 'four', 'five'])print(frame2)用Series 字典或字典生成DataFrameIn[9]d = {'one': pd.Series([1., 2., 3.], index=['a', 'b', 'c']),'two': pd.Series([1., 2., 3., 4.], index=['a', 'b', 'c', 'd'])} print(pd.DataFrame(d))In[10]#通过类似字典标记的方式或属性的方式,可以将DataFrame的列获取为一个Series,返回的Series拥有原DataFrame相同的索引print(frame2['state'])列可以通过赋值的方式进行修改,例如,给那个空的“delt”列赋上一个标量值或一组值In[11]frame2['debt'] = 16.5print(frame2)In[15]print(frame2)frame2['new'] = frame2['debt' ]* frame2['pop']print(frame2)In[16]frame2['debt'] = np.arange(5.)print(frame2)PIL库是一个具有强大图像处理能力的第三方库。

相关主题