Python教程:進擊機器學習(二)--Python
如果有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
陣列
定義陣列不用宣告型別,也不限制數組裡面的型別。
>>> 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字典有一個特點,無序。
定義一個字典:
>>> 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]
需要注意的一點是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。