1. 程式人生 > >Python教程:進擊機器學習(二)--Python

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。