何彥南

@smalleye

Joined on Jun 2, 2019

  • 老師ppt What is Heap Heap(Binary Heap) 是以 tree(樹) 為基礎的資料結構, 他有以下特點: Shape Property: Heap 的資料結構永遠都是 完全二元樹 Complete Binary Tree, 也就是在每個 level(層級) ,由左至右都有 Node(節點),但是如果是同層級的左至右少一個結點,就不是完全二元樹了。(如下圖) Heap Property: 所有節點再初始狀態下沒有大小排序. 但是當所有 parent nodes(父節點)> 所有的 child nodes(子節點), 就會稱作 Max-Heap。反之當所有 parent nodes(父節點)< 所有的 child nodes(子節點) Min-Heap。(如下圖) 它是 linked 的進化版,一般在 linked-List 裡的 Node 裡面,只會包含 value 和 pointer(往前或往後)。但是它把在 heap 裡面,它限制只能往一個方向
     Like  Bookmark
  • Datacamp Book === ###### tags: `book` - [主頁面](/vpJdpyrJSZem0saaPoActw) - [Regular Expressions in Python(範本格式)](/QG_sO0-RRJeneBWdVzv-Cg) Python Programming === - [Python Data Science Toolbox (Part 1)](/KVJq5V7SRYWRWM38lNhS8A) - [Python Data Science Toolbox (Part 2)](/vKRs3afNT6GEAn1eKYEEEA) - [Cleaning Data in Python](/@smalleye/HJ2fHhrxS) - [Optimizing Python Code with pandas](/@smalleye/B1xZWxjMS) Data Manipulation with Python === - [pandas Foundations](/dhQS4MzPTLy6JF_eDFNvYQ) - [Manipulati
     Like  Bookmark
  • # Manipulating DataFrames with pandas ###### tags: `Datacamp` `python` `panda` `data science` `Data Manipulation with Python` >**作者:何彥南** >Datacamp 課程: [Manipulating DataFrames with pandas](https://www.datacamp.com/courses/manipulating-dataframes-with-pandas) **注意:** 1. 以下df 為 pandas 的 DataFrame 的型式的表格資料。 2. pd 為 panda 套件的縮寫。 3. 請以官方文件 [panda doc](https://pandas.pydata.org/pandas-docs/stable/) 為主。 4. 注意 `panda 的版本(0.25.0)`,有些功能可能在新版無法使用。 5. 相關資料在上方datacamp課程頁面的右下角的 dataset [toc] --- # [CH1]
     Like  Bookmark
  • # Merging DataFrames with pandas ###### tags: `Datacamp` `python` `panda` `data science` `Data Manipulation with Python` >**作者:何彥南** >Datacamp 課程: [Merging DataFrames with pandas](https://www.datacamp.com/courses/merging-dataframes-with-pandas) **注意:** 1. 以下df 為 pandas 的 DataFrame 的型式的表格。 2. pd 為 panda 套件的縮寫。 3. 請以官方文件 [panda doc](https://pandas.pydata.org/pandas-docs/stable/) 為主。 4. 注意panda 的版本(0.25.0),有些功能可能在新版無法使用。 [toc] --- # [CH1] Preparing Data >In this chapter, you'll learn about dif
     Like  Bookmark
  • # pandas Foundations ###### tags: `Datacamp` `python` `panda` `data science` `Data Manipulation with Python` >**作者:何彥南** >Datacamp 課程: [pandas Foundations](https://www.datacamp.com/courses/pandas-foundations) **注意:** 1. df 為 pandas 的 DataFrame 的縮寫。 2. pd 為 panda 套件的縮寫。 3. 請以官方文件 [panda doc](https://pandas.pydata.org/pandas-docs/stable/) 為主。 4. 注意panda 的版本,有些功能可能在新版無法使用。 5. 程式碼內`#`標記的地方為 output。 [toc] --- # [CH1] Data ingestion & inspection ## 1.What is pandas? > 有以下幾點特性 ![](https://i.imgur
     Like  Bookmark
  • # Python Data Science Toolbox (Part 2) ###### tags: `Datacamp` `python` `function` `Python Programming` >**作者:何彥南** >Datacamp 課程: [Python Data Science Toolbox (Part 2)](https://www.datacamp.com/courses/python-data-science-toolbox-part-2) **注意:** 1. df 為 pandas 的 DataFrame 的縮寫。 2. pd 為 panda 套件的縮寫。 3. 請以官方文件 [panda doc](https://pandas.pydata.org/pandas-docs/stable/) 為主。 4. 注意panda 的版本,有些功能可能在新版無法使用。 5. 程式碼內`#`標記的地方為 output [TOC] # Iterators in Pythonland ## [1-1]Introduction to iterators >
     Like  Bookmark
  • # Python Data Science Toolbox (Part 1) ###### tags: `Datacamp` `python` `function` `Python Programming` >**作者:何彥南** >Datacamp 課程: [Python Data Science Toolbox (Part 1)](https://www.datacamp.com/courses/python-data-science-toolbox-part-1) **注意:** 1. df 為 pandas 的 DataFrame 的縮寫。 2. pd 為 panda 套件的縮寫。 3. 請以官方文件 [panda doc](https://pandas.pydata.org/pandas-docs/stable/) 為主。 4. 注意panda 的版本,有些功能可能在新版無法使用。 5. 程式碼內`#`標記的地方為 output [TOC] --- # Writing your own functions ## [1-1]User-defined functions
     Like  Bookmark
  • # Tree ###### tags: `演算法` `資料結構` {%hackmd @rpyapp/theme %} ## 定義 A binary tree 是一種樹數據結構,其中每個節點最多具有兩個子節點,從而創建樹的分支。 這兩個子節點通常稱為左右節點。父節點是具有子節點的節點,而子節點可能包括對其父節點指引。 ![](https://i.imgur.com/SzKdh74.png) * **Path** − Path refers to the sequence of nodes along the edges of a tree. * **Root** − The node at the top of the tree is called root. There is only one root per tree and one path from the root node to any node. * **Parent** − Any node except the root node has one edge upward to a node called pa
     Like 1 Bookmark
  • # Merge sort VS. Heap sort ###### tags: `演算法` ## 我的想法 heap sort: 簡單來說,他從頭到尾都是在原本的 array 上做動作,也就是 in-place 。這就是為什麼大家會覺得它比較複雜,雖然看起來都是在 heap 上面做比較和交換,但是它實際上是在原本的 array 上做動作,heap 只是是否交換的依據而已。所以我覺得 heap sort 在概念上是比較複雜的。但是在了解它的做法和原裡後,實做起來就很簡單,基本上就是重複 max(min) heap 和換 root 這兩個步驟,過程中 heap 會持續邊小,值到剩下一個元素。 merge sort: 它的概念很簡單,就是一直切到只剩下一個時,兩個唯一組開始比較合併,也就是它是先把小的 array 整理好後再去跟其他 array 整理。到下一層時,因為兩個 array 都整理過了,所以在做比較排序時就會比較容易(只需比較頭)。在實作上我就不太順利了,因為想起來很簡單但是做起來不容易。我覺得主要是遞迴的部分卡的蠻久的,尤其是它由左至右,和等待的部分,反正就是整個程式運作的順
     Like  Bookmark
  • # Merge Sort ###### tags: `演算法` `資料結構` {%hackmd @rpyapp/theme %} [toc] ## What is Merge Sort 合併排序是一種 Divide and Conquer 的演算法,它是將一個 array 分解為幾個 sub array,直到每個 sub array 由一個元素組成,然後以產生排序列表的方式合併這些子列表。 大致分成三個步驟: 1. **切分**: 將未排序的 array 劃分為 sub array,當每個 sub array 就是每個 element 時。 2. **比較合併**: 將相鄰的兩個 sub array ,互相比較第一個 element ,並取較小值則為以排序值,以排序值可以用新 array 存或是用 index 的方式將其隔開。 3. 重複該過程,直到所有 sub array 都合併成一個 array 。 ### >>下圖1、8、2、9 為切分過程,當切到 sub array 只包含 1 element 時開始比較合併的 ![](https://he-s3.s3.amaz
     Like  Bookmark
  • # random ###### tags: `python package` `NLP` `繁體中文斷詞` 參考: http://www.runoob.com/python/func-number-random.html [Toc] {%hackmd @rpyapp/theme %} # 常用的隨機抽取方法 ## 整數 ```python= random.randint(1,10) # 隨機產生 1~10 之間的整數 random.randrange(0,100,2) # 0~100 之間的偶數(間格=2) ``` ## 浮點數 ```python= random.random() # 隨機產生 0~1 之間的 float random.uniform(1.1,5.4) # 隨機產生 1.1 ~ 5.4 之間的 float ``` ## 序列裡的 elelment ```python= text = 'tomorrow' random.choice(text) # 從序列中隨機選取一個 element rando
     Like  Bookmark
  • # Quick Sort ###### tags: `演算法` `資料結構` {%hackmd @rpyapp/theme %} [toc] # 課堂作業 > [老師的範例_array](https://github.com/pecu/DSA/blob/master/05_QuickSort/QuickSort_Array_Recursive.ipynb) > [老師的範例_linked-List](https://github.com/pecu/DSA/blob/master/05_QuickSort/QuickSort_LinkedList.py) # 課外資料 ## 簡介 ![](https://www.geeksforgeeks.org/wp-content/uploads/gq/2014/01/QuickSort2.png) Quick Sort 他是以 [divide-and-conquer](https://en.wikipedia.org/wiki/Divide-and-conquer_algorithm) 演算法為基礎。他的概念其實很簡單,就是從 array
     Like  Bookmark
  • # Set ###### tags: `演算法` `資料結構` {%hackmd @rpyapp/theme %} [toc] # 外部資料 ## 維基百科定義 在數學定義上,它是集合論的研究物件,指具有某種特定性質的事物的母體,「一堆東西」集合裡的事物東西叫作元素。數字 2、4和 6 在單獨考慮時是不同的對象,但是當將它們放一起時,會形成的大小為3的單個集合- {2,4,6}。 ## Set ### 特性 * Set集合裡沒有重複元素 * Set集合是無序集合 ### 基本操作 * 插入 * 刪除 * Set 是否為空 * Set 是否包含某個元素 * Set 元素個數 ### 在 python 裡的基本操作 ```python= a = {1,2,3} b = {2,5,6} a&b # 交集:{2} a|b # 聯集:{1, 2, 3, 5, 6} a-b # 差集:{1, 3} 2 in a # True 2 not in a # False ``` ### 其他符號 |python 符號|意思| |:-:|:-| |---|差集| |&|交集| |I|聯集| |
     Like  Bookmark
  • # Stack & Queue ###### tags: `演算法` `資料結構` {%hackmd @rpyapp/theme %} [toc] # 課堂 ![](https://i.imgur.com/ArHZkOR.png) > 擷取至: [老師的PPT](https://docs.google.com/presentation/d/e/2PACX-1vQ1hb79im0vqpApCttGnXAFRT8SqH9HQP0b_oyVRCV8SVyiHLkHJjidYGAfxkvq468QMumFIDdTeiB-/pub?start=false&loop=false&delayms=3000&slide=id.g5ff860a9a8_0_5) ## 為什麼要有 Stack? * 編譯器(word、sublime)的 undo 。 * 網頁瀏覽器中回到上一頁功能。 * 任何遞迴(recursion)形式的演算法都可以用 Stack 改寫,例如 Depth-First Search(DFS,深度優先搜尋) ## Stack 必須有的功能 * **Push(Data)**: 把資料放到最
     Like  Bookmark
  • # Insertion Sort ###### tags: `演算法` `資料結構` {%hackmd @rpyapp/theme %} [toc] # 課堂 ![](https://i.imgur.com/1JrragX.png) > [老師 ppt](https://docs.google.com/presentation/d/e/2PACX-1vQOTMDM-5-OUaGfnLUOFVgefFwSVRplSwnbicp0CXOQrB5H8RM_1Aq8o_4JxHlncEmhjvqk3tzcoB7s/pub?start=false&loop=false&delayms=3000&slide=id.g619c41add7_0_24) ### 作法 分成已排序 (小 -> 大) 和未排序兩部分。依序由未排序中的第一筆為基準值(正處理的值),插入到已排序中的適當位置。在比較時... * 直到遇到 `第一個 < 基準值` 的值,停止並插入在該值右邊。 * 遇到 `> or = 基準值` 的值,將該值往右移動,基準值繼續往前比較。 ### 時間複雜度 (Time Complexit
     Like  Bookmark
  • # linked list ###### tags: `演算法` `資料結構` {%hackmd @rpyapp/theme %} [toc] # 課堂 ![](https://i.imgur.com/1Qc4uHD.png) > 圖片擷取至: [老師PPT](https://docs.google.com/presentation/d/e/2PACX-1vTB218-EdUZ5jpNz6Uv4TOZQc37Y281v128_aRcWC6EhkTQs5bS8fh7yysmcuzb9R2QPN6_PDshFWL_/pub?start=false&loop=false&delayms=3000&slide=id.g5ff860a9a8_0_5) ## 為什麼要有 linked list? * 可不連續的儲存在記憶體位置。 * 依使用多寡分配空間,不會有浪費的空間。 * 適合需要頻繁新增、刪除的資料 * 走訪功能 * Black Chain 應用 # 外部資料 ## What is a linked list ? ![](https://i.imgur.com/YkJUBP7.png)
     Like 1 Bookmark
  • # Optimizing Python Code with pandas ###### tags: `Datacamp` `python` `panda` `data science` >**作者:何彥南** >Datacamp 課程: [Optimizing Python Code with pandas](https://www.datacamp.com/courses/optimizing-python-code-with-pandas) **注意:** 1. df 為 pandas 的 DataFrame 的縮寫。 2. pd 為 panda 套件的縮寫。 3. 請以官方文件 [panda doc](https://pandas.pydata.org/pandas-docs/stable/) 為主。 4. 注意panda 的版本,有些功能可能在新版無法使用。 5. 程式碼內`#`標記的地方為 output [toc] # [ch1] Select columns and rows efficiently >This chapter will give you an
     Like  Bookmark
  • # Cleaning Data in Python ###### tags: `Datacamp` `python` `Cleaning Data` >**作者:何彥南** >Datacamp 課程: [Cleaning Data in Python](https://www.datacamp.com/courses/cleaning-data-in-python) **注意:** 1. df 為 pandas 的 DataFrame 的縮寫。 2. pd 為 panda 套件的縮寫。 3. 請以官方文件 [panda doc](https://pandas.pydata.org/pandas-docs/stable/) 為主。 4. 注意panda 的版本,有些功能可能在新版無法使用。 5. 程式碼內`#`標記的地方為 output --- [TOC] --- # Exploring your data ## [1-1] Diagnose data for cleaning ### 1. Cleaning data * Prepare data for analysis
     Like  Bookmark