大家一起學 Python – (9) NumPy

終於講到這個主題了~ 相信大家都看過 Numpy 這個模組,但是應該都不是很熟悉(沒關係,大鳥大學的時候完全不會寫 Python)。Numpy 基本上是 Python 在做一些所謂 Data Science 運算的核心模組,它對於做高緯度(>3D)的陣列/矩陣運算非常便利。好,進入主題… 環境安裝 Python 裡沒有預設安裝 numpy 的模組。因此在開始寫之前,我們需要安裝這個模組;否則將出現以下錯誤訊息。 >>> import numpy as np Traceback (most recent call last): File “”, line 1, in ModuleNotFoundError: No module named ‘numpy’ 各位可以到你們的指令介面直接下這個指令。 pip install numpy numpy.array() 很有趣的一件事情是,雖然 Python 把陣列稱為 list,Numpy 還是把它稱為 array。我們先來講一下一些在敘述 numpy array 常用到的名詞。 …

大家一起學 Python – (8) RegEx

Regular Expression 是一個很好用來做文字操作的一個工具。它主要就是透過使用者輸入的字元中找出一篇文章裡相對應的 pattern。聽起來很抽象吧,文字是會有怎樣的 pattern 咧?我們就不浪費時間直接進入主題吧~ RegEx Patterns 我們會將 RegEx 的 pattern 寫在一個方括號([])裡,並且如果要限制字數的話,我們會寫在大掛號({})裡。以下為懶人包,不用謝~ Syntax Meaning Example [A-Z0-9] Pattern 所有大寫英文字母和數字 {1-3},{:5} 字元數 1 至 3 個字元, 0 至 5 個字元 [^wW] 以外/沒有??? 不是 w, W 的字元 a|b 或、pipe、or a 或 b colou?r 前一個字元可選 color, colour he*y! 0 或以上前一個字元 hey!, heey!, heeey!… …

大家一起學 Python – (7) 內建模組 (sys, os)

很多人都會鼓勵初學者學寫 Python 的原因是因為 Python 的 有很多非常好用的 libraries/framework,尤其是在一些圖像處理(OpenCV,Pillow)、機器學習/深度學習(Keras,PyTorch)、網頁架構(Django,Flask)等等。但是我們在套用這些套件前,讓我們先來看看怎樣使用一些 Python 一些內建就安裝好的模組吧~ 在還沒有開始前我們先來看 Python 裡面如何 import 模組。基本上我們可以直接 import 模組(1);我們也可以選擇 import 模組裡面的其中一個 method(2);最後也可以更改程式碼裡呼叫模組裡的名稱,這個舉動叫 aliasing(3)。當然,我們通常都會統一更改的名稱… import math #(1) from random import seed #(2) import math.e as euler #(3) # Python 的 math 模組裡面還有很多很有趣的函式可以自己玩玩看哦~ sys 我們先來看一個系統模組,這裡的系統指的是 Python 的軟體,而不是作業系統(os)。當我們的程式碼需要讀取使用者所傳入的 arguments 時,input() 只會在呼叫 Python 之後向使用者 prompt 一個 string;這時我們可以用 …

大家一起學 Python – (6) Sorted、Filter、Map、Enumerate

我們之前有提到一些蠻有用的內建函式,這裡要再跟大家介紹一些很有用的內建函式,順便來練習一下之前提到的 Lambda Function。這一系列教大家的 Function 主要都會傳入一個可迭代(iterable)的物件。 sorted() 顧名思義,sorted 就是拿來做順序排列用的啦~基本上 input 會是一個 iterable 的 object。我們在做文字標記的時候很常需要從一個文集(corpus)裡面將整個文件字串斷詞、不重複、並且有排序。下列範例程式基本上就稍微模擬了這個狀況~ corpus = ‘this is a list. this list have some strings. these strings have punctuations!!!’.split() # split() 是 string 裡的一個方法(method),他會將一個字串裡對空格(或是 input 的字元)做斷詞 print(corpus) # Output: [‘this’, ‘is’, ‘a’, ‘list.’, ‘this’, ‘list’, ‘have’, ‘some’, ‘strings.’, ‘these’, ‘strings’, ‘have’, …

大家一起學 Python – (5) 控制流程

控制流程(Control Flow)其實不是什麼大學問,只是一個程式流程的邏輯… 換句話說,就是你們在 C 語言所學的 if … else statement,或者 for while loops 等等。雖然這些對資管系的學生來說應該都算蠻基本的常識,但是要再此提醒大家這個邏輯對你們理解別人的程式碼的時候非常重要哦~甚至鼓勵各位在寫程式碼前可以先畫一個流程圖,讓你們寫程式的時候可以寫得更有效率… (OS: 好啦老人不要再嘮叨了…) 條件判斷 很明顯,條件判斷都不會離開布林值(Boolean Value)。主要是當一個條件回复的值是 True 的時候,才會跑這一段程式。當然,Python 裡面是沒有 !True 的寫法, 所以要用 not 來表示 False。在這裡提醒各位要記得縮排哦~ # Syntax if condition: # do this elif condition: # do this else condition: # do this 對了,Python 裡面是沒有 switch case 的條件判斷語法(其實 if …

大家一起學 Python – (4) Function、Class、Files

正如其他的程式語言,我們都會將常用到的一段程式定義成一個函式(Function),且有點 Functional Programming 的感覺。但應該比較少人聽過我們可以透過 Class ,把 Python 當 Object Oriented Programming 來寫。當然,這篇教學還不會對程式設計原則做深入探討這些原理背後的精神。 首先先稍微說明一下 Function 和 Class 之間的差別。Function 基本上會有一個主要的功能,並且我們宣告和呼叫一個 Function 的目的是為了減少撰寫重複的程式碼;例如:print() 就是一個輸出字元到 stdout 的一個 function。而 Class 主要為一個物件的藍圖,它可以擁有 variables 和 function;例如:bird() 這個 class 裡面會有 name 的變數,和 tweet() 的方法。 函式 Function 當我們要定義一個函式的時候,我們會用 def 來做宣告一個函式;並且 () 內為輸入(input)值。我們也可以在定義一些預設的 input,如範例裡面的。 def say_hello(name, loud=False): if loud: print(‘HELLO, …

大家一起學 Python – (3) Lists、Dict、Tuple

今天我們再來看 Python 裡一些簡單的容器 (Container)。容器可以持有任意數量的變數,方便寫程式的人存取一組變數,並且對這些變數做迭代(iteration)或遞迴(recursion)。常見的容器有 Lists、Dict(tionary)、Tuple。 Lists Python lists 基本上就是其他語言裡的 Array。 Lists 特別的地方在於它可以擁有不同形態的變數,並且可以隨時修改大小。Python lists 裡其實有很多很特別的功能,就是可以對 List 定義一個區塊,並且做切割(slicing)。 P/S: Python 的 index 是從 0 開始哦~ Dict Python dictionary 基本上跟 Java 裡的 Map 和 JavaScript 的 Object 很相似的容器。基本上一個 dict 會擁有一個 key,value pair。 Tuple Tuple 某種角度跟 Lists 非常相似,他們都是有順序的陣列。但是 Tuple 和 Lists 不同的地方在於宣告 Tuple 的值之後就不可以再更改(Immutable)。Tuple …

大家一起學 Python – (2) 數字、字串、布林值

Python 是一個高階的編程語言。基本上就是你可以在一個 runtime 下直接執行一些程式碼。 而且很多人也覺得 Python 的程式碼看上去很直覺,很像虛擬碼,因此初學者會很好上手。上一篇文章有提到了,Python 在資料科學、機器學習、深度學習方面有很多很棒的套件。如: Tensorflow、Keras、PyTorch 等… 但是在進入這些套件之前,讓我們先來了解一些 Python 的基礎。正如 C、Java 等課程,大家都會先從一些基本的 Data Type 開時。 數字 Numbers 基本上分為整數 int 和 浮點數 float。我們可以用 type() 這個 function 來看這個變數的種類。當然像其他的語言,我們可以用 + – * / % 這些 operator 來做變數的運算,但是 python 裡面是沒有 ++ — 的遞增遞減運算哦~ 想要遞增或遞減要使用 x += 1 這代入式的 shorthand。 但在 python …

大家一起學 Python – (1) 環境安裝

近幾年人工智慧和 Big Data 的蓬勃發展幾乎都讓大家想跳入這個 AI 的坑裡。過去當智慧型手機開始盛行的時候,大家都跳入寫 Java 的車上; 而最近很多人都因為人工智慧而開始跳入 Python 的坑。以下為谷歌搜尋的一些數據: 即便如此,這並不帶表 Python 比 Java 或 JavaScript 來得更好;這只是每個語言都有它們各自擅長的地方。而針對機器學習 / 深度學習這一塊,Python 算是比較常用的語言。但是資管系的 Python 只是選修課,老師不想讓同學在壓力太大的環境下學習,造成反效果。大鳥也到了後期因為一些需求,覺得這一塊需要更多加強。因此想開始在這裡寫 Python 的教學文章,希望可以幫助大家更快上手 Python。 因為 Python 2 到了 2020 年就不會再做更新維護,因此這一系列文章都會以 Python 3 為主。 環境安裝 基本上 Python 的環境安裝還蠻簡單的,主要要安裝 Python3 和 pip 就可以了。Ubuntu18.04 已經有預設裝好 Python 了,但是沒有安裝 pip。pip 為 Python 的套件安裝模組。 …

Visual Studio Code – 寫程式的好夥伴

資管系的技術課程幾乎都離不開程式。當然,有一個好的編譯器可以提高撰寫程式的效率。Visual Studio Code 是微軟所開發的免費開源程式碼編譯器,也是根據 Stack Overflow 最多開發者在使用的編譯器哦~ 那我們來看看這個編譯器為啥會這麼厲害吧~! 下載鏈接:https://code.visualstudio.com/ 安裝後基本上會有這樣的一個介面… 我們可以先安裝一些程式環境所需要的套件。右上角的 Customize > Tools and Languages 裡點擊會使用到的程式語言,VSCode 就會自動安裝一些基本環境套件。因為 Windows 本身是用 C/C++ 來撰寫的,所以 VSCode 預設就會安裝 C/C++ 所需要的套件。語言環境基本上會為程式碼著色、自動填充程式碼、標識明顯的錯誤訊息,Compiler 需要另外安裝哦~ 左邊一排下來有一些按鈕,這個東東叫 Activity Bar,我們看一下這裡有什麼東西吧~ 第一個是 Explorer(Ctrl + Shift + E)。在這裡可以開啟你們儲存程式的資料夾,VSCode 會自動讀取資料夾裡面的檔案,基本上就可以不用再開檔案總管就可以輕鬆開啟程式碼。Explorer 裡面還有一個叫 Outline 的區塊… 他基本上會顯示你程式碼裡的 function、class 和 variables;點擊兩下它就會把你帶到宣告的程式碼行。 下一個按鈕是 Search(Ctrl + Shift + F)。當然在程式碼的 …