Python教程:进击机器学习(二)--认识Python
Self-intro: I am a graduate student at an unnamed institution in China :) The main focus is Computer vision using deep learning. I will update some of notes about deep learning at steemit. Hope that like-minded friends follow me, and we discuss and support with each other. Thanks for reading! @whytin
如果有Python基础或者有学习过的,可以直接跳过本教程。
本教程旨在快速认识和了解Python,作为机器学习的前调\坏笑。
了解Python
Python作为一个高级编程语言,它有哪一些特性:
- 不同于C语言(编译型语言),Python是一种解释型语言。就是在执行一段Python代码之前并不需要对其编译。
- Python是开源的、免费的
- 跨平台,Linux/Unix、Windows、MacOS X。
- 没有冗长的语法,可读性很强
- 兼容并支持其他语言
Hello Python
打开Ipython shell,类似Matlab,简单的Hello world就是这样。
>>> print("Hello, world!")
Hello, world!
Python简单的语法体现在,不需要声明变量和函数类型。
>>> a = 3
>>> type(a)
<type 'int'>
如果是C语言:
int a = 3;
再来感受一下复数计算:
>>> a = 1.5 + 0.5j
>>> a.real
1.5
>>> a.imag
0.5
Python的基础我就不讲太多,如果之前没接触过编程的可以推荐参考:http://www.runoob.com/python/python-tutorial.html
书籍的话推荐《Python基础教程 (第2版) 》下载地址:Beginning.Python.From.Novice.to.Professional,2nd.Edition_chs
数组
定义数组不用声明类型,也不限制数组里面的类型。
>>> colors = [3, -200, 'hello']
数组索引是从0开始,跟C语言一样,跟Matlab有区别(从1开始)
>>> colors[0], colors[2]
(3, 'hello')
Python关于数组的也有很多内置函数,方便我们操作函数。
例如添加值list.append(x),插入list.insert(i, x),排序list.sort(key=None, reverse=False)。更多数组的内置函数参考:
https://docs.python.org/3/tutorial/datastructures.html#more-on-lists
字符串
Python对String的操作类似List:
>>> a = "hello"
>>> a[0]
'h'
>>> a[-1]
'o'
字符串分割:
>>> a = "hello, world!"
>>> a[2:10:2] # 参数: a[开始:结束:步长]
'lo o'
字符串格式化:
>>> 'An integer: %i; a float: %f; another string: %s' % (1, 0.1, 'string')
'An integer: 1; a float: 0.100000; another string: string'
更多关于Python字符串参考:https://docs.python.org/tutorial/introduction.html#unicode-strings
字典
Python字典有一个特点,无序。
定义一个字典:
>>> tel = {'emmanuelle': 5752, 'sebastian': 5578}
添加键值对:
tel['francis'] = 5915
然后我们再来输出一下这个字典
>>> tel
{'sebastian': 5578, 'francis': 5915, 'emmanuelle': 5752}
可以看到我们插入的键值对被放在中间,Python的字典是不按任何规则来排序的。
我们可以调用这个字典键和值通过以下两个函数:
>>> tel.keys()
['sebastian', 'francis', 'emmanuelle']
>>> tel.values()
[5578, 5915, 5752]
关于字典更高级的操作参考:https://docs.python.org/tutorial/datastructures.html#dictionaries
除了这几个常用的容器类型,还有元组(Tuples)和集合(Sets),因为在实际开发中比较少用,所以就不展开讲了。
需要注意的一点是Python对变量分配地址的机制,不像其他语言,Python是对对象分配地址,同一个对象只分配一个地址,但是可以有多个变量名:
In [1]: a = [1, 2, 3]
In [2]: b = a
In [3]: a
Out[3]: [1, 2, 3]
In [4]: b
Out[4]: [1, 2, 3]
In [5]: a is b
Out[5]: True
In [6]: b[1] = 'hi!'
In [7]: a
Out[7]: [1, 'hi!', 3]
控制语句
在C语言中,在同一个控制语句下的需要加{}来表示。而在Python中只需要通过缩进来保持控制块,在同一个控制块的缩进要一致。
>>> a = 10
>>> if a == 1:
... print(1)
... elif a == 2:
... print(2)
... else:
... print('A lot')
A lot
for语句的用法:
>>> for i in range(4):
... print(i)
0
1
2
3
while语句的用法:
>>> a = [1, 0, 2, 4]
>>> for element in a:
... if element == 0:
... continue
... print(1. / element)
1.0
0.5
0.25
函数定义
Python的函数定义也只需要def 函数名(参数):
(同样需要缩进)
In [81]: def double_it(x):
....: return x * 2
In [82]: double_it(3)
Out[82]: 6
脚本和模块
我们已经把最基础的数据类型、容器、控制语句和函数简单了解一下,接下来我们就是把它们写到程序里面。我们把代码写进文件的目的就是重复使用这些代码,就跟为什么我们要用函数类似。我们一般用Python编辑器(Windows下IDE可以用Pycharm来写Python程序)来创建.py文件。
比如我们构建一个测试文件test.py
message = "Hello how are you?"
for word in message.split():
print word
在IPython里面我们可以用%run test.py来运行程序
In [1]: %run test.py
Hello
how
are
you?
在Windows或者Linux的命令行就使用 python test.py 来运行程序
$ python test.py
Hello
how
are
you?
但是我们有时候又不需要执行一个程序,只是希望把一些函数写到文件里面,需要的时候再拿出来用,有点类似C++的头文件。这个时候就需要用到导入模块(我们可以用来导入我们自己写的文件,也可以导入所需要的函数库):
假设我们需要导入Numpy库来对0-10进行采样,我们可以这样使用:
>>>import numpy as np
>>>np.linspace(0, 10, 6)
array([0, 2, 4, 6, 8, 10])
as可以对导入的文件设置别名,当我们在调用模块里面的函数时只需在用一个.来链接(module.function())
关于Python的介绍就先讲到这里,接下来是Python数学计算库Numpy。
Ref:http://www.scipy-lectures.org/intro/language/python_language.html
Nice post! I will follow you from now on.
Congratulations @whytin! You received a personal award!
Click here to view your Board of Honor
Do not miss the last post from @steemitboard:
Congratulations @whytin! You received a personal award!
You can view your badges on your Steem Board and compare to others on the Steem Ranking
Vote for @Steemitboard as a witness to get one more award and increased upvotes!