Python入门教程
以熟练使用Pytorch完成深度学习模型为目标,简单介绍Pytorch涉及到的Python基础(Python其它知识可以在遇到后再学习,先动手)。喜欢小编的可以加小编的Q群867067945,进群可以领取免费的学习资料哦,群里还有专业的大佬给你解答你的问题
这篇教程并不涉及Python的复杂方法,教程的结构如下:
1.Python实例
2.Python基础
- 2.1 Python数据类型
- 2.2 Python语法
3.Numpy
4.类
5.文件读写
6.错误分析
3.Numpy
3.1Numpy中主要是数组array的计算,数组是一个包含同类型数据的对象,数组有点类似于之前所述的列表。
![a0f50dec99297c6d2ee33f3eb2af9ac9.png](https://i-blog.csdnimg.cn/blog_migrate/310c57b63960a3d6eeb0f29ce21ff92b.jpeg)
3.2 数组查询与切片是一个比较重要,且常用的方法
![e0b4125e071f517a1fba6a9b03aaa77c.png](https://i-blog.csdnimg.cn/blog_migrate/434c4853b1a2f91ca4e27e46c9a81863.jpeg)
3.3 获取Numpy数组的属性
![464000916ca72c805f3229408c4f4f98.png](https://i-blog.csdnimg.cn/blog_migrate/ec6ad200886283613ed14ed8707ba215.jpeg)
3.4 维数操作
在深度学习中用到的tensor张量与numpy数组比较类似,会涉及到比较多维数上的操作,需要对维数有个比较深刻的认识,这里要注意增加维数与挤压维数比较常用。
如果数组的shape为(5,3,4,5)表示第一维有5个,第二维有3个,第三维有4个,第四维有5个。
![0b9e134d97fb810838b7fd914f1451ac.png](https://i-blog.csdnimg.cn/blog_migrate/4ce41f6cd8b9a417c46e6ef6935b21e7.jpeg)
3.5 数组条件查询
在图像处理或numpy使用中比较常用的方法是对数组进行条件查询,并对满足条件的值修改。
3.5.1 对数组中满足条件的位置赋值,支持多条件查询
![7f2325e93529a7da672df430b96f45ad.png](https://i-blog.csdnimg.cn/blog_migrate/1dcad143c4945fbca84da3e9afe7efc5.jpeg)
3.5.1 查找满足条件的数组的位置,用np.where(),同样可以多条件查询.
![c8023cff4d1306b2db3984889d6230ea.png](https://i-blog.csdnimg.cn/blog_migrate/5661b3a4a5fe60aa5452d24feab0e927.jpeg)
这里np.where返回的是一个x,y坐标数组,如上图表示满足条件的位置在[0,0],[0,2],[1,2]三个点。
![e8708a54479fa3b9900c2016eb7283a9.png](https://i-blog.csdnimg.cn/blog_migrate/18d73fa02e66f2cea6d88061f9338041.jpeg)
练习1.a = np.array([1,2,3.2],dtype=np.int),a等于什么?提示:数据类型与a中不太一样。
练习2. 有两个数组a,b,令a与b的元素中相同且为0的元素更改为255.
a = np.array([[1,0,3],[4,0,6]]), b = np.array([[0,2,3],[4,0,6]])
4.类
先看一下类相关的一些简单描述。
![d8539b11bb11880bcb4bf1a051a557e0.png](https://i-blog.csdnimg.cn/blog_migrate/2ed3dff6fe1982acf7e4b8ea35ca863d.jpeg)
4.1类的创建与实例化
这里类可以理解为一个模板,比如人是一个类。实例化是用模板创建了一个具体的对象,比如“小明”就是类实例化的一个对象,且有了这个模板后我可以轻而易举的创建无数个实例对象,比如女娲以人类为模板创建了无数的具体的人。
![d4763eb591f8da2f4f6f6f3dfded72ff.png](https://i-blog.csdnimg.cn/blog_migrate/1cc8e36f70f89536e71b0a38abcb2749.jpeg)
4.2初始化
创建了人类这个模板后,不能是空的,我希望他能有名字,有性别,有出生日期,所以需要再每次实例化一个人的时候赋予他这些属性,就有了初始化。
注意初始化是在每次实例化的时候都会运行的函数。函数名不能自定义,且self表示实例本身,比如实例化了xiaoming后,xiaoming这个对象里面self就表示xiaoming.
def init(self,参数1,参数2…):
![634ec9d1352536a50f4dcf117f0950e5.png](https://i-blog.csdnimg.cn/blog_migrate/c75c1a1a63a0ba9ac5b4b783e185feac.jpeg)
4.3类的属性与实例属性
类的属性或者类的方法调用都是用英文句号“.”表示。
类的属性与实例属性的区别在于它们有没有self.如下图所示,num是类属性,name是实例属性。
类的属性在不实例化也可以调用,但是实例属性只能在实例化后给实例对象调用,因为实例属性在__init__函数中,只有实例化才会运行该函数。
![1f040c87df48a189b4303632c235e727.png](https://i-blog.csdnimg.cn/blog_migrate/35be423e0ae0cc3f21cfa91ced427762.jpeg)
4.4类的方法
类的方法与属性一样,也有类方法与实例方法,一般用到的都是实例方法,所以这里只讲实例方法。
![9a5546a1643eb2b02c49823cbf66af2e.png](https://i-blog.csdnimg.cn/blog_migrate/a34b73f67902be2a2c80ec863cf9223b.jpeg)
4.5类的继承
有时候需要复用一个类A的大多数方法与属性,这时候就可以通过继承A来实现。
4.5.1 父类的定义与普通类的定义一致
![90defb9e9240685fa64b80f60ce6c089.png](https://i-blog.csdnimg.cn/blog_migrate/e9382aa64f47379e032988f8cde0698d.jpeg)
4.5.2 子类
(1)子类的定义与普通类的定义有所区别,class 子类名(父类名):
(2)在初始化时需要初始化父类的初始化函数。
(3)子类可以调用父类的方法与属性。
![c06dd838cb238023cb417c1502b5e6c0.png](https://i-blog.csdnimg.cn/blog_migrate/1904ed80b1391cb534aec9d39bc464cf.jpeg)
喜欢小编的可以加小编的Q群867067945,进群可以领取免费的学习资料哦,群里还有专业的大佬给你解答你的问题