深度学习与计算机视觉之Python基础学习

https://zhuanlan.zhihu.com/intelligentunit

http://toutiao.com/i6311034787540763137/

https://zhuanlan.zhihu.com/p/20870307

2.基础知识

Python是一种长得像伪代码,具备高可读性的编程语言。

优点挺多:可读性相当好,写起来也简单,所想立马可以转为实现代码,且社区即为活跃,可用的package相当多;缺点:效率一般。

2.1.1 基本数据类型

最常用的有数值型(Numbers),布尔型(Booleans)和字符串(String)三种。

  • 数值型(Numbers)

可进行简单的运算,如下:

又一重磅再获翻译授权,斯坦福CS231N深度学习与计算机视觉

PS:python中没有x++ 和 x-- 操作

  • 布尔型(Booleans)

包含True False和常见的与或非操作

又一重磅再获翻译授权,斯坦福CS231N深度学习与计算机视觉

  • 字符串型(String)

字符串可以用单引号/双引号/三引号声明

又一重磅再获翻译授权,斯坦福CS231N深度学习与计算机视觉

字符串对象有很有有用的函数:

又一重磅再获翻译授权,斯坦福CS231N深度学习与计算机视觉

2.1.2 基本容器
  • 列表/List

和数组类似的一个东东,不过可以包含不同类型的元素,同时大小也是可以调整的。

又一重磅再获翻译授权,斯坦福CS231N深度学习与计算机视觉

列表最常用的操作有:

切片/slicing

即取子序列/一部分元素,如下:

又一重磅再获翻译授权,斯坦福CS231N深度学习与计算机视觉

循环/loops 即遍历整个list,做一些操作,如下:

又一重磅再获翻译授权,斯坦福CS231N深度学习与计算机视觉

可以用enumerate取出元素的同时带出下标

又一重磅再获翻译授权,斯坦福CS231N深度学习与计算机视觉

List comprehension 这个相当相当相当有用,在很长的list生成过程中,效率完胜for循环:

又一重磅再获翻译授权,斯坦福CS231N深度学习与计算机视觉

你猜怎么着,list comprehension也是可以加多重条件的:

又一重磅再获翻译授权,斯坦福CS231N深度学习与计算机视觉

  • 字典/Dict 和Java中的Map一样的东东,用于存储key-value对:

又一重磅再获翻译授权,斯坦福CS231N深度学习与计算机视觉

对应list的那些操作,你在dict里面也能找得到:

循环/loops

又一重磅再获翻译授权,斯坦福CS231N深度学习与计算机视觉

又一重磅再获翻译授权,斯坦福CS231N深度学习与计算机视觉

  • 元组/turple 本质上说,还是一个list,只不过里面的每个元素都是一个两元组对。

又一重磅再获翻译授权,斯坦福CS231N深度学习与计算机视觉

2.1.3 函数

用def可以定义一个函数:

又一重磅再获翻译授权,斯坦福CS231N深度学习与计算机视觉

又一重磅再获翻译授权,斯坦福CS231N深度学习与计算机视觉

  • 类/Class

python里面的类定义非常的直接和简洁:

又一重磅再获翻译授权,斯坦福CS231N深度学习与计算机视觉

2.2.NumPy基础

NumPy是Python的科学计算的一个核心库。它提供了一个高性能的多维数组(矩阵)对象,可以完成在其之上的很多操作。很多机器学习中的计算问题,把数据vectorize之后可以进行非常高效的运算。

2.2.1 数组

一个NumPy数组是一些类型相同的元素组成的类矩阵数据。用list或者层叠的list可以初始化:

又一重磅再获翻译授权,斯坦福CS231N深度学习与计算机视觉

生成一些特殊的Numpy数组(矩阵)时,我们有特定的函数可以调用:

又一重磅再获翻译授权,斯坦福CS231N深度学习与计算机视觉

2.2.2 Numpy数组索引与取值

可以通过像list一样的分片/slicing操作取出需要的数值部分。

又一重磅再获翻译授权,斯坦福CS231N深度学习与计算机视觉

又一重磅再获翻译授权,斯坦福CS231N深度学习与计算机视觉

还可以这么着取:

又一重磅再获翻译授权,斯坦福CS231N深度学习与计算机视觉

我们还可以通过条件得到bool型的Numpy数组结果,再通过这个数组取出符合条件的值,如下:

又一重磅再获翻译授权,斯坦福CS231N深度学习与计算机视觉

Numpy数组的类型

又一重磅再获翻译授权,斯坦福CS231N深度学习与计算机视觉

2.2.3 Numpy数组的运算

矩阵的加减开方和(元素对元素)乘除如下:

又一重磅再获翻译授权,斯坦福CS231N深度学习与计算机视觉

矩阵的内积是通过下列方法计算的:

又一重磅再获翻译授权,斯坦福CS231N深度学习与计算机视觉

特别特别有用的一个操作是,sum/求和(对某个维度):

又一重磅再获翻译授权,斯坦福CS231N深度学习与计算机视觉

还有一个经常会用到操作是矩阵的转置,在Numpy数组里用.T实现:

又一重磅再获翻译授权,斯坦福CS231N深度学习与计算机视觉

2.2.4 Broadcasting

Numpy还有一个非常牛逼的机制,你想想,如果你现在有一大一小俩矩阵,你想使用小矩阵在大矩阵上做多次操作。额,举个例子好了,假如你想将一个1*n的矩阵,加到m*n的矩阵的每一行上:

又一重磅再获翻译授权,斯坦福CS231N深度学习与计算机视觉

又一重磅再获翻译授权,斯坦福CS231N深度学习与计算机视觉

又一重磅再获翻译授权,斯坦福CS231N深度学习与计算机视觉

更多Broadcasting的例子请看下面:

又一重磅再获翻译授权,斯坦福CS231N深度学习与计算机视觉

2.3 SciPy

Numpy提供了一个非常方便操作和计算的高维向量对象,并提供基本的操作方法,而Scipy是在Numpy的基础上,提供很多很多的函数和方法去直接完成你需要的矩阵操作。有兴趣可以浏览Scipy方法索引查看具体的方法,函数略多,要都记下来有点困难,随用随查吧。

向量距离计算需要特别拎出来说一下的是,向量之间的距离计算,这个Scipy提供了很好的接口scipy.spatial.distance.pdist:

又一重磅再获翻译授权,斯坦福CS231N深度学习与计算机视觉

2.4 Matplotlib

这是python中的一个作图工具包。如果你熟悉matlab的语法的话,应该会用得挺顺手。可以通过matplotlib.pyplot.plot了解更多绘图相关的设置和参数。

又一重磅再获翻译授权,斯坦福CS231N深度学习与计算机视觉

结果如下:

又一重磅再获翻译授权,斯坦福CS231N深度学习与计算机视觉

又一重磅再获翻译授权,斯坦福CS231N深度学习与计算机视觉

又一重磅再获翻译授权,斯坦福CS231N深度学习与计算机视觉

又一重磅再获翻译授权,斯坦福CS231N深度学习与计算机视觉

又一重磅再获翻译授权,斯坦福CS231N深度学习与计算机视觉

2.5 简单图片读写

可以使用imshow来显示图片。

又一重磅再获翻译授权,斯坦福CS231N深度学习与计算机视觉

又一重磅再获翻译授权,斯坦福CS231N深度学习与计算机视觉

关于转载
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值