莫凡 Python 基礎研習讀書會
Python 基礎研習讀書會是以莫凡的 Pytohn 基礎課程為主,帶領學員每週一小時,從入門的程式操作開始,一步一步學會 Python 的撰寫,最後進入 Pandas、NumPy 與資料視覺化,掌握
內容簡介
作者介紹
適合人群
你將會學到什麼
購買須知
-
12/1:Python基礎
Print()、運算、變數宣告
-
print()
详细文字教程: https://morvanzhou.github.io/tutorials/python3 教学教程 print 功能播放列表: https://www.youtube.com/playlist?list=PLXO45tsB95cIRP5gCi8AlYwQ1uFO2aQBw
-
基礎數學運算
详细文字教程: https://morvanzhou.github.io/tutorials/python3 教学教程 基础数学运算符号* 乘法/ 除法+ 加法- 减法% 余数** 次方播放列表: https://www.youtube.com/playlist?list=PLXO45tsB95cIRP5gCi8...
-
變數宣告
详细文字教程: https://morvanzhou.github.io/tutorials/python 中的自变量 就相当于一个 placeholder, 装载要存储的值或者是运算. 然后之后还可以调用当初存储起来的自变量.播放列表: https://www.youtube.com/playlist?list...
-
-
12/1:Python迴圈
while、for、continue & break
-
while
详细文字教程: https://morvanzhou.github.io/tutorials/python 当中有两个最基础的循环语句, while 和 for.while 通常被用在无限循环当中, 当条件满足时,执行命令, 条件不满足时结束执行.for 通常被用在迭代当中.下节内容会提到具体的不同点.播放列表:...
-
for
详细文字教程: https://morvanzhou.github.io/tutorials/python 当中有两个最基础的循环语句, while 和 for.while 通常被用在无限循环当中, 当条件满足时,执行命令, 条件不满足时结束执行.for 通常被用在迭代当中.它会按顺序一个一个迭代list 或者 ...
-
continue & break
详细文字教程: https://morvanzhou.github.io/tutorials/python3 简单教学教程continue 和 break 是打断循环的两种方式.break 是从立即生效,不执行循环里面剩下的语句,跳出循环.continue 是不执行循环里剩下的语句,重新开始新一轮的循环.播放列表...
-
-
12/1:Python條件判斷
if、if else、if elif else
-
if
详细文字教程: https://morvanzhou.github.io/tutorials/python3 教学教程7, 关系if 的条件语句,if 指的是当条件为什么的时候,执行什么.比如说当条件为真实的时候,我要print('真实'),那如果条件不为真实的时候,我就不会 print 出'真实'.播放列表: ...
-
if else
详细文字教程: https://morvanzhou.github.io/tutorials/python3 教学教程7, 关系if 的条件语句,else 是表示 if 的条件不成立的时候说要执行的结果.比如说 if '现在是晚上': 执行'我要睡觉',else: (表示现在是白天了) 执行'我要工作'.播放列表...
-
if elif else
详细文字教程: https://morvanzhou.github.io/tutorials/python3 教学教程9 if elif else.if elif else 是一个整体, 当其中的一项判断成立的时候, python 就会跳出这个整体,开始执行后面的程序.播放列表: https://www.yout...
-
-
12/1:Python 函數
函數 PART1、函數 PART2
-
函数 PART 1
详细文字教程: https://morvanzhou.github.io/tutorials/python3 教学教程10 def 函数,函数是指一连串的,或者较为复杂的功能,定义好函数之后可以在任何地方,任何时间调用定义好的函数播放列表: https://www.youtube.com/playlist?lis...
-
函数 PART 2
详细文字教程: https://morvanzhou.github.io/tutorials/python3 教学教程12每一个函数都可以有默认的参数,定义好默认参数后是可以不用输入参数值,直接用此参数.同时也可以改变默认参数值,赋予它不同的意义播放列表: https://www.youtube.com/play...
-
-
12/1:Python 類別
類別 Class
-
12/8:Python 文件讀寫 和 錯誤處理
-
12/8 回放【免費直播】Cupoy 12/8 - 莫凡 Python 基礎研習讀書會 - YouTube
💡 莫凡 Python 研習讀書會時間:每週三的晚上 20:00 ~ 21:00。💡 直播平台:Youtube / Discord(https://discord.gg/qs3vc2ncRk) 使用 Discord 可以獲得更好的互動體驗喔!💡 教材連結:https://bit.ly/3xI7Mnv...
-
python基础 28 错误处理 try (教学教程tutorial) - YouTube
详细文字教程: https://morvanzhou.github.io/tutorials/python3 简单教学教程本节的练习代码:https://github.com/MorvanZhou/tutorials/blob/master/basic/28_try.py播放列表: https://www.you...
-
python基础 15 读写文件1 (教学教程tutorial) - YouTube
详细文字教程: https://morvanzhou.github.io/tutorials/python3 简单教学教程15python 中的读写文件很简单,文件可以被不同的形式打开,(只读, 写入, 附加...)但是万万要注意的是当完成了文件读写以后一定要关上文件.file.close()播放列表: http...
-
python基础 16 读写文件2 (教学教程tutorial) - YouTube
详细文字教程: https://morvanzhou.github.io/tutorials/python3 简单教学教程16这次我们说了对已有文件的附加文字,附上想要加入的内容,我们只要改变打开文件的方式就可以了, 以' a',也就是 append 的方式打开它就能附上内容了.播放列表: https://www...
-
python基础 17 文件读写3 (教学教程tutorial) - YouTube
详细文字教程: https://morvanzhou.github.io/tutorials/python3 简单教学教程17文件读取我们可以用三种方式输出内容,一种是一次一行的输出, (readline)一种是全部读取,按顺序存在 python 列表里, (readlines),一种是全部读取,存储为一整个文件...
-
Python 文件讀寫 和 錯誤處理
1. Python #15 讀書會內容來源: python基础 15 读写文件1 (教学教程tutorial) 撰寫文件內容 撰寫文件內容 ## 撰寫內容 ## \n空行 context = 'This is my first test.\nThis is next line.\nThis is last line' print(context) 執行結果 This is my first test.This is next line.This is last line 補充 - 更多轉義字幅運用 \t tab鍵 context1 = 'This is my first test.\tThis is next line.\tThis is last line' print(context1) 執行結果 This is my first test. This is next line. This is last line 轉義字符可以參考: https://blog.csdn.net/XuFangfang5206/article/details/80030300 寫進文件 ## 打開文件(創建文件) ## w: write ## r: read file = open('first_file.txt', 'w') ## 寫入文件 file.write(context) ## 關閉文件 file.close() 執行結果: 會產生一個first_file文件,打開後如下圖內容 補充 不同模式的開啟文件 https://www.runoob.com/python/python-func-open.html ## r+和w+一樣都是讀寫文件,但是如果檔案不存在r+會報錯,w+會創建文件 ## 寫進檔案 f = open('test.txt', 'w+') f.write('Hello Everyone') ## 寫進檔案 f = open('test.txt', 'r+') f.write('Hi Everybody\n') ## 累加文件 f = open('test.txt', 'a+') f.write('Welcome') f.close() 執行結果: 可以看到前面寫進文件的時候,第一次的寫入被第二次覆蓋掉了,第三次才會累加上去 2. Python #16 讀書會內容來源: python基础 16 读写文件2 (教学教程tutorial) 追加文字 ## 追加文字 append_context = '\nThis is appended file.' ## 追加方式打開文件 file = open('first_file.txt', 'a') file.write(append_context) file.close() 執行結果: 可以看到,我們在原本的first_file文件中添加了一行文字 - This is appended file. 3. Python 17 讀書會內容來源: python基础 17 文件读写3 (教学教程tutorial) 讀取文件 - 整個 ## 讀取文件 file = open('first_file.txt', 'r') ## 全部讀取 content = file.read() print(content) file.close() 執行結果 This is my first test.This is next line.This is last lineThis is appended file. 讀取文件 - 一行 file = open('first_file.txt', 'r') ## 讀取一行 content1 = file.readline() print(content1) file.close() 執行結果 This is my first test. 讀取文件 - 一行一行寫進Python List裡面 file = open('first_file.txt', 'r') ## 一行一行讀取 content1 = file.readlines() print(content1) file.close() 執行結果: 會用list的型態,將一行一行的內容存成list傳回 ['This is my first test.\n', 'This is next line.\n', 'This is last line\n', 'This is appended file.'] 補充: 使用list資料寫進檔案¶ 讀書會內容來源: https://shengyu7697.github.io/python-write-text-file/ context = ['Welcome\n', 'Hello\t', '123456789'] f = open('test1.txt', 'w') f.writelines(context) f.close() 執行結果 補充: 使用print()的方式寫進檔案 f = open('test2.txt', 'w') print('Welcome', file = f) print('Hello', file = f) print('123456789', file = f) f.close() 執行結果 補充: 使用open as的方法來讀寫文件 with open('test3.txt', 'a') as f: f.write('Welcome\n') 執行結果 4. 例外處理 Try Except 讀書會課程內容來源: https://www.youtube.com/watch?v=hpQz-0q5uGY&list=PLXO45tsB95cIRP5gCi8AlYwQ1uFO2aQBw&index=28 當錯誤發生 打開一個不存在的檔案 ## 打開一個不存在的檔案 file = open('aaa.txt', 'r') 執行結果: 會報錯說沒有這個檔案 ---------------------------------------------------------------------------FileNotFoundError Traceback (most recent call last)<ipython-input-2-0082e98b9cac> in <module> 1 ## 打開一個不存在的檔案----> 2 file = open('aaa.txt', 'r')FileNotFoundError: [Errno 2] No such file or directory: 'aaa.txt' 使用錯誤處理來印出錯誤資訊 ## 使用錯誤處理來印出錯誤資訊 try: file = open('aaa.txt', 'r') except Exception as e: print(e) 執行結果 [Errno 2] No such file or directory: 'aaa.txt' 那這邊因為我們知道錯誤的原因是文件根本不存在,所以為了讓使用者能夠更快了解錯誤原因,我們自己寫下錯誤原因,並在錯誤出現時印出給使用者看 ## 使用錯誤處理來印出錯誤資訊 try: file = open('aaa.txt', 'r') except Exception as e: print('Sorry We cannot find the file you set in your compuiter') 執行結果 Sorry We cannot find the file you set in your compuiter 這邊我們想設計一個方法是使用者知道自己沒有這個文件後,會詢問他是否要幫他自動創建這個文件 ## 使用錯誤處理來印出錯誤資訊 file_name = 'aaa.txt' try: file = open(file_name, 'r') except Exception as e: print('Sorry We cannot find the file you set in your compuiter') r = input('Do you want to create a new file: (y/n)') if r == 'y': file = open(file_name, 'w') print(file_name +' has been created') else: pass 執行結果: 當我希望系統自動幫我創建 Sorry We cannot find the file you set in your compuiterDo you want to create a new file: (y/n)yaaa.txt has been created 當執行成功 現在的情況是當沒有錯誤發生時,我們希望執行的步驟 使用else ## 使用錯誤處理來印出錯誤資訊 file_name = 'aaa.txt' try: file = open(file_name, 'r+') except Exception as e: print('Sorry We cannot find the file you set in your compuiter') r = input('Do you want to create a new file: (y/n)') if r == 'y': file = open(file_name, 'w') print(file_name +' has been created') else: pass else: file.write('Successful!!') print('Open Successfully')file.close() 執行結果 Open Successfully 補充教材: https://chwang12341.medium.com/%E7%B5%A6%E8%87%AA%E5%B7%B1%E7%9A%84python%E5%B0%8F%E7%AD%86%E8%A8%98-debug%E8%88%87%E6%B8%AC%E8%A9%A6%E5%A5%BD%E5%B9%AB%E6%89%8B-%E5%98%97%E8%A9%A6try-except%E8%88%87%E4%B8%BB%E5%8B%95%E5%BC%95%E7%99%BCraise%E8%88%87assert-%E7%A8%8B%E5%BC%8F%E7%95%B0%E5%B8%B8%E8%99%95%E7%90%86-c2bc2e3e4e13
-
-
12/8:Python模塊
-
python基础 26 自己的模块 (教学教程tutorial) - YouTube
详细文字教程: https://morvanzhou.github.io/tutorials/python3 简单教学教程每一个py脚本文件其实就可以当做python 的一个模块,我们可以通过视频中提到的方法调用它播放列表: https://www.youtube.com/playlist?list=PLXO45...
-
python基础 25 import 载入模块 (教学教程tutorial) - YouTube
详细文字教程: https://morvanzhou.github.io/tutorials/python3 简单教学教程import 模块的4种方法:本节练习代码:https://github.com/MorvanZhou/tutorials/blob/master/basic/25_import.py播放列表...
-
python基础 14 模块安装 (教学教程tutorial) - YouTube
详细文字教程: https://morvanzhou.github.io/tutorials/python 基础教学教程14在学习或者应用 python 的时候,往往需要运用到大量的外部模块,比如 google 牛逼的神经网络 Tensorflow, 都是外部模块或者包.这节主要讲了如何用 pip 安装需要的模块...
-
Python Module
1. 安裝、刪除,搜尋模塊 讀書會課程內容來源: python基础 14 模块安装 (教学教程tutorial) 這邊我們以Pandas為例 安裝模塊 使用pip來安裝 筆記: 如果使用Python3以上的版本,已經擁有pip,而Python3以下的版本,需要另行安裝pip pip: 預設為使用Python2安裝 pip3: 預設為使用Python3安裝 (base) C:\Users\user\Desktop\book_club\python_basic\module>pip3 install pandas Collecting pandas Downloading pandas-1.3.3-cp37-cp37m-win_amd64.whl (10.0 MB) |████████████████████████████████| 10.0 MB 3.3 MB/sRequirement already satisfied: python-dateutil>=2.7.3 in c:\users\user\anaconda3\lib\site-packages (from pandas) (2.8.1)Requirement already satisfied: pytz>=2017.3 in c:\users\user\anaconda3\lib\site-packages (from pandas) (2019.3)Requirement already satisfied: numpy>=1.17.3 in c:\users\user\anaconda3\lib\site-packages (from pandas) (1.18.1)Requirement already satisfied: six>=1.5 in c:\users\user\anaconda3\lib\site-packages (from python-dateutil>=2.7.3->pandas) (1.14.0)Installing collected packages: pandasERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.phik 0.11.2 requires scipy>=1.5.2, but you have scipy 1.4.1 which is incompatible.Successfully installed pandas-1.3.3 預設的情況它會安裝最新的版本 我們也可以透過指定版本的方式來進行安裝,我可以從這邊看有哪些版本可以安裝:https://pandas.pydata.org/ 我們來安裝pandas1.2.5 (base) C:\Users\user\Desktop\book_club\python_basic\module>pip3 install pandas==1.2.5 Collecting pandas==1.2.5 Downloading pandas-1.2.5-cp37-cp37m-win_amd64.whl (9.1 MB) |████████████████████████████████| 9.1 MB 6.4 MB/sRequirement already satisfied: numpy>=1.16.5 in c:\users\user\anaconda3\lib\site-packages (from pandas==1.2.5) (1.18.1)Requirement already satisfied: pytz>=2017.3 in c:\users\user\anaconda3\lib\site-packages (from pandas==1.2.5) (2019.3)Requirement already satisfied: python-dateutil>=2.7.3 in c:\users\user\anaconda3\lib\site-packages (from pandas==1.2.5) (2.8.1)Requirement already satisfied: six>=1.5 in c:\users\user\anaconda3\lib\site-packages (from python-dateutil>=2.7.3->pandas==1.2.5) (1.14.0)Installing collected packages: pandasERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.phik 0.11.2 requires scipy>=1.5.2, but you have scipy 1.4.1 which is incompatible.Successfully installed pandas-1.2.5 結果: 就會看到成功安裝Pandas 1.2.5版本 刪除模塊 pip3 uninstall Package Name (base) C:\Users\user\Desktop\book_club\python_basic\module>pip3 uninstall pandas Found existing installation: pandas 1.3.3Uninstalling pandas-1.3.3: Would remove: c:\users\user\anaconda3\lib\site-packages\pandas-1.3.3.dist-info\* c:\users\user\anaconda3\lib\site-packages\pandas\*Proceed (Y/n)? y Successfully uninstalled pandas-1.3.3 搜尋模塊 這邊大家可能會發現pip search Package Name已經不能用了,那我們要用什麼來搜尋模塊呢? 我這邊提供pip show Package Name的方法給大家 (base) C:\Users\user\Desktop\book_club\python_basic\module>pip3 show pandas Name: pandasVersion: 1.3.3 Summary: Powerful data structures for data analysis, time series, and statisticsHome-page: https://pandas.pydata.orgAuthor: The Pandas Development TeamAuthor-email: pandas-dev@python.orgLicense: BSD-3-ClauseLocation: c:\users\user\anaconda3\lib\site-packagesRequires: python-dateutil, numpy, pytzRequired-by: visions, statsmodels, seaborn, phik, pandas-profiling, mlxtend 結果: 它會印出numpy的所有資訊,像是版本、License、作者等等 超好用對吧!! 更新模塊 pip3 install -U Package Name (base) C:\Users\user\Desktop\book_club\python_basic\module>pip3 install -U pandas Requirement already satisfied: pandas in c:\users\user\anaconda3\lib\site-packages (1.2.5)Collecting pandas Using cached pandas-1.3.3-cp37-cp37m-win_amd64.whl (10.0 MB)Requirement already satisfied: python-dateutil>=2.7.3 in c:\users\user\anaconda3\lib\site-packages (from pandas) (2.8.1)Requirement already satisfied: numpy>=1.17.3 in c:\users\user\anaconda3\lib\site-packages (from pandas) (1.18.1)Requirement already satisfied: pytz>=2017.3 in c:\users\user\anaconda3\lib\site-packages (from pandas) (2019.3)Requirement already satisfied: six>=1.5 in c:\users\user\anaconda3\lib\site-packages (from python-dateutil>=2.7.3->pandas) (1.14.0)Installing collected packages: pandas Attempting uninstall: pandas Found existing installation: pandas 1.2.5 Uninstalling pandas-1.2.5: Successfully uninstalled pandas-1.2.5ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.phik 0.11.2 requires scipy>=1.5.2, but you have scipy 1.4.1 which is incompatible.Successfully installed pandas-1.3.3 結果: 它就會將我們原本安裝的版本移除掉,然後安裝最新的模塊版本 補充: 如果把模塊刪掉了,還可以使用更新的方式下載最新的模塊嗎? 答案: 可以!! (base) C:\Users\user\Desktop\book_club\python_basic\module>pip3 uninstall pandas Found existing installation: pandas 1.3.3Uninstalling pandas-1.3.3: Would remove: c:\users\user\anaconda3\lib\site-packages\pandas-1.3.3.dist-info\* c:\users\user\anaconda3\lib\site-packages\pandas\*Proceed (Y/n)? y Successfully uninstalled pandas-1.3.3(base) C:\Users\user\Desktop\book_club\python_basic\module>pip3 install -U pandasCollecting pandas Using cached pandas-1.3.3-cp37-cp37m-win_amd64.whl (10.0 MB)Requirement already satisfied: numpy>=1.17.3 in c:\users\user\anaconda3\lib\site-packages (from pandas) (1.18.1)Requirement already satisfied: python-dateutil>=2.7.3 in c:\users\user\anaconda3\lib\site-packages (from pandas) (2.8.1)Requirement already satisfied: pytz>=2017.3 in c:\users\user\anaconda3\lib\site-packages (from pandas) (2019.3)Requirement already satisfied: six>=1.5 in c:\users\user\anaconda3\lib\site-packages (from python-dateutil>=2.7.3->pandas) (1.14.0)Installing collected packages: pandasERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.phik 0.11.2 requires scipy>=1.5.2, but you have scipy 1.4.1 which is incompatible.Successfully installed pandas-1.3.3 我先刪除Pandas,再用更新指令來更新Pandas,發現它直接幫我下載最新版本的Pandas了 2. 導入模塊 讀書會課程內容來源: python基础 25 import 载入模块 (教学教程tutorial) 第一種方法 導入time模塊 ## 導入time模塊import time print(time.localtime()) 執行結果 time.struct_time(tm_year=2021, tm_mon=9, tm_mday=13, tm_hour=12, tm_min=2, tm_sec=56, tm_wday=0, tm_yday=256, tm_isdst=0) 第二種方法: 縮短應用模塊的名稱 ## 導入time模塊,並使用t來替換time的名稱 import time as t print(t.localtime()) 執行結果 time.struct_time(tm_year=2021, tm_mon=9, tm_mday=13, tm_hour=12, tm_min=4, tm_sec=26, tm_wday=0, tm_yday=256, tm_isdst=0) 第三種方法: 只想導入模塊中的某些屬性功能,不用全部都導入 我們這邊只想導入time裡面的time跟localtime屬性功能 ## 導入time模塊,並只想導入模塊中的某些屬性功能,不用全部都導入 - time、localtime from time import time,localtime print(localtime()) ## time.localtime() print(time()) ## tiem.time() 執行結果 time.struct_time(tm_year=2021, tm_mon=9, tm_mday=13, tm_hour=12, tm_min=8, tm_sec=23, tm_wday=0, tm_yday=256, tm_isdst=0)1631506103.717853 第四種方法: 導入所有模塊中的屬性功能 導入time模塊中的所有屬性功能 ## 導入time模塊,並導入所有模塊中的屬性功能 from time import * print(localtime())print(time()) 執行結果 time.struct_time(tm_year=2021, tm_mon=9, tm_mday=13, tm_hour=12, tm_min=10, tm_sec=38, tm_wday=0, tm_yday=256, tm_isdst=0)1631506238.8118517 3. 創建自己的模塊(腳本),並導入應用 讀書會課程內容來源: python基础 26 自己的模块 (教学教程tutorial) 撰寫一個自己的Python Script - myscript.py def print_text(content): print(content) def add(a, b): return a + b def greeting(person): print('Welcome ', person) 在其他Python檔中導入自己剛剛創建的模塊 ## 導入自己的模塊 - myscript.py import myscript as m ## 使用myscript中的add屬性功能 print(m.add(6, 8)) ## 使用myscript中的print_text屬性功能 m.print_text('Hello!!') ## 用myscript中的Agreeting功能 m.greeting('Jack') 執行結果 Hello!!Welcome Jack 另一種載入自己模塊的方法 通常我們會將自己寫的模塊放在要使用它的Python檔案旁邊,一定要這樣放嗎?我們導入那麼多使用pip安裝的模塊也沒有放在旁邊啊,這時候我們可以把它放進Anaconda存放模塊的位置,這樣就一樣可以導入,而且不用放在旁邊囉 檢查在電腦中Anaconda將Python模塊放在哪裡? 這邊會有所有我在Anaconda中下載的所有Python模塊 把我們剛剛寫好的Python模塊放入,然後重新執行一次剛剛的Python ## 導入自己的模塊 - myscript.py import myscript as m ## 使用myscript中的add屬性功能 print(m.add(6, 8)) ## 使用myscript中的print_text屬性功能 m.print_text('Hello!!') ## 用myscript中的Agreeting功能 m.greeting('Jack') 執行結果 Hello!!Welcome Jack 發現一樣能夠導入我們自己創建的模塊!!
-
-
12/15:Python列表(一)
元組、列表、多維列表、字典
-
12/15 回放【免費直播】Cupoy 12/15 莫凡:Python 基礎研習讀書會 - YouTube
💡 莫凡 Python 研習讀書會時間:每週三的晚上 20:00 ~ 21:00。💡 直播平台:Youtube / Discord(https://discord.gg/qs3vc2ncRk) 使用 Discord 可以獲得更好的互動體驗喔!💡 教材連結:https://bit.ly/3xI7Mnv...
-
元組和列表
详细文字教程: https://morvanzhou.github.io/tutorials/python3 简单教学教程元组 和 列表很相近,都是表示一个有顺序的一系列数据,可以被迭代,也可以被赋值播放列表: https://www.youtube.com/playlist?list=PLXO45tsB95cI...
-
列表
详细文字教程: https://morvanzhou.github.io/tutorials/python3 简单教学教程列表的基本功能.例子:a = [1,1,1,1]a.append(2)a.insert(1,2)a.remove(2) # remove the first item whose value ...
-
多維列表
详细文字教程: https://morvanzhou.github.io/tutorials/python3 简单教学教程一般应用到多维数据我们会用到外部的模块或者是库,大家可以观看我的 numpy&pandas 教程:https://www.youtube.com/watch?v=To3YL92HZyc&lis...
-
字典
详细文字教程: https://morvanzhou.github.io/tutorials/python3 简单教学教程字典和列表类似,但是字典是没有顺序的.字典里面也能包含列表或者另一个字典.播放列表: https://www.youtube.com/playlist?list=PLXO45tsB95cIRP...
-
-
12/15:Python列表(二)
zip、lambda、map、copy、deepcopy
-
zip lambda map
详细文字教程: https://morvanzhou.github.io/tutorials/python3 简单教学教程本节练习代码:https://github.com/MorvanZhou/tutorials/blob/master/basic/29_zip_lambda_map.py这次我们说了说 pyt...
-
copy & deepcopy
详细文字教程: https://morvanzhou.github.io/tutorials/python3 简单教学教程本节练习代码:https://github.com/MorvanZhou/tutorials/blob/master/basic/30_copy_deepcopy.py这次讲的是深度复制和浅复...
-
-
12/15:Python數據處理
pickle、set
-
set
详细文字教程: https://morvanzhou.github.io/tutorials/本节练习代码: https://github.com/MorvanZhou/tutorials/blob/master/basic/35_set.pypython中自带的最简单的找不同的方法播放列表: https://w...
-
pickle
详细文字教程: https://morvanzhou.github.io/tutorials/python3 简单教学教程本节练习代码: https://github.com/MorvanZhou/tutorials/blob/master/basic/34_pickle.pypython 中的 pickle 是...
-
-
12/22:多線程 Multithreading
Add、Join、Queue、效率問題GIL、Lock
-
Add
python3 简单教学教程本节练习代码:https://github.com/MorvanZhou/tutorials/blob/master/threadingTUT/thread2_add_thread.py这次我们讲到了 threading 的几个功能. threading.active_count(),...
-
Join
python3 简单教学教程本节练习代码:https://github.com/MorvanZhou/tutorials/blob/master/threadingTUT/thread3_join.pyjoin是等待所有线程都结束了以后才开始继续主程序.播放列表:https://www.youtube.com/p...
-
Queue
python3 简单教学教程本节练习代码:https://github.com/MorvanZhou/tutorials/blob/master/threadingTUT/thread4_queue.py说到用多线程进行运算,需要用到返回值的时候,我们是不可以用 return 的,这时就需要用到 queue 来存...
-
Lock
python3 简单教学教程本节练习代码:https://github.com/MorvanZhou/tutorials/blob/master/threadingTUT/thread6_lock.pylock 可以帮助你锁住你想变动的值,这个值暂时不被其他线程说动用.播放列表:https://www.youtu...
-
效率問題 GIL
python3 简单教学教程本节练习代码:https://github.com/MorvanZhou/tutorials/blob/master/threadingTUT/thread5_GIL.py多线程的运算不一定会效率会提升很多,原因在于 python 的 GIL (global interpreter l...
-
-
12/22:多元處理 Multiprocessing
建立 processing、Queue、效率比對、Lock、正規表達式
-
建立 Processing
python3 简单教学教程在 multiprocessing 多和运算的时候,创建进程和创建线程是高度类似了,如果你也想了解如何创建,欢迎观看这个列表:https://www.youtube.com/playlist?list=PLXO45tsB95cKaHtKLn-jat8SOGndS3MEt添加线程: ht...
-
Queue
python3 简单教学教程本节代码链接: https://github.com/MorvanZhou/tutorials/blob/master/multiprocessingTUT/multiprocessing3_queue.py多进程( multiprocessing) queue 的使用和多线程( th...
-
效率比對
python3 简单教学教程本节练习代码: https://github.com/MorvanZhou/tutorials/blob/master/multiprocessingTUT/multiprocessing4_efficiency_comparison.py我们对比了 多进程(multiprocessi...
-
Lock
python3 简单教学教程本节练习代码:https://github.com/MorvanZhou/tutorials/blob/master/multiprocessingTUT/multiprocessing7_lock.pymp中的 lock 实际上和 threading 中的 lock 是一样的功能,防...
-
正規表達式
详细文字教程: https://morvanzhou.github.io/tutorials/python-basic/basic/13-10-regular-expression/本节练习代码: https://github.com/MorvanZhou/tutorials/blob/master/basic/...
-
-
12/29、1/5:Matplotlib 基本用法 和 設置坐標軸
-
Matplotlib 3 基本用法 (python 数据可视化教学教程) - YouTube
本节代码: https://github.com/MorvanZhou/tutorials/blob/master/matplotlibTUT/plt3_simple_plot.pyMatplotlib 播放列表: https://www.youtube.com/playlist?list=PLXO45tsB95...
-
Matplotlib 4 figure 图像 (python 数据可视化教学教程) - YouTube
本节代码: https://github.com/MorvanZhou/tutorials/blob/master/matplotlibTUT/plt4_figure.pymatplotlib 的 figure 就是一个 单独的 figure 小窗口, 小窗口里面还可以有更多的小图片. Matplotlib 播放...
-
Matplotlib 5 设置坐标轴1 (python 数据可视化教学教程) - YouTube
本节代码: https://github.com/MorvanZhou/tutorials/blob/master/matplotlibTUT/plt5_ax_setting1.py在 matplotlib 中如何设置坐标轴的范围, 单位长度, 替代文字等等.Matplotlib 播放列表: https://ww...
-
Matplotlib 6 设置坐标轴2 (python 数据可视化教学教程) - YouTube
本节代码: https://github.com/MorvanZhou/tutorials/blob/master/matplotlibTUT/plt6_ax_setting2.py这次会说到在我们如何移动matplotlib 中 axis 坐标轴的位置.Matplotlib 播放列表: https://www....
-
Matplotlib 7 Legend 图例 (python 数据可视化教学教程) - YouTube
本节代码: https://github.com/MorvanZhou/tutorials/blob/master/matplotlibTUT/plt7_legend.pymatplotlib 中的 legend 图例就是为了帮我们展示出每个数据对应的名称. 更好的让读者认识到你的数据结构.Matplotlib ...
-
Matplotlib 8 Annotation 标注 (python 数据可视化教学教程) - YouTube
本节代码: https://github.com/MorvanZhou/tutorials/blob/master/matplotlibTUT/plt8_annotation.py在用 matplotlib 做标注 annotation 的时候,我们其实可以用两种方法, 一种是用 plt 里面的 annotate...
-
Matplotlib 10 scatter 散点图 (python 数据可视化教学教程) - YouTube
本节代码: https://github.com/MorvanZhou/tutorials/blob/master/matplotlibTUT/plt10_scatter.py当然, matplotlib 是可以做散点图 scatter 的. 而且还可以做散点图很多特效, 我们来看看吧.Matplotlib 播放...
-
Matplotlib基本用法和設定軸
1. 基本用法 公開課程內容來源: Matplotlib 3 基本用法 (python 数据可视化教学教程) 繪製一條線 #### 導入套件import matplotlib.pyplot as pltimport numpy as np## 構建數據## 從-1到1,取50個點,會等分切割點x = np.linspace(-1, 1, 100)print(x)y = 2 * x + 1print(y)## 視覺化## 畫第一條線plt.plot(x, y)## 顯示圖像plt.show() 執行結果 繪製兩條線在同一個圖片裡 ## 構建數據## 從-1到1,取50個點,會等分切割點x = np.linspace(-1, 1, 100)y = 2 * x + 1## 視覺化## 畫第一條線plt.plot(x, y)## 畫第二條線plt.plot(y, x)## 顯示圖像plt.show() 執行結果 繪製一條線在兩張圖片裡 ## 構建數據## 從-1到1,取50個點,會等分切割點x = np.linspace(-1, 1, 100)y = 2 * x + 1## 視覺化## 畫第一條線plt.figure()plt.plot(x, y)## 畫第二條線plt.figure()plt.plot(y, x)## 顯示圖像plt.show() 執行結果 繪製一條曲線 #### 導入套件import matplotlib.pyplot as pltimport numpy as np## 構建數據## 從-1到1,取50個點,會等分切割點x = np.linspace(-1, 1, 100)print(x)y = x ** 2## 視覺化## 畫第一條線plt.plot(x, y)## 顯示圖像plt.show() 執行結果 使用Python編譯器,可以直接提供大家一些功能來操作圖片 功能 大家可以看到圖片的上方有各種功能鍵來幫助我們操作圖片,像是可以縮放圖片、調整圖片大小,調整x軸y軸大小範圍,存檔等等 >>> import matplotlib.pyplot as plt>>> import numpy as np>>> x = np.linspace(-1, 1, 100)>>> y = x ** 2>>> plt.plot(x, y)[<matplotlib.lines.Line2D object at 0x00000255D897FE88>]>>> plt.plot(y, x)[<matplotlib.lines.Line2D object at 0x00000255D8999288>]>>> plt.show() 執行結果 2. 使用Figure來繪製不同圖片 公開課程內容來源: Matplotlib 4 figure 图像 (python 数据可视化教学教程) 為了方便帶大家看出差異,這邊使用Python編譯器來執行 繪製兩張不同的圖片 >>> import matplotlib.pyplot as plt>>> import numpy as np>>> x = np.linspace(-1, 1, 100)>>> y1 = 2 * x + 1>>> y2 = x ** 2>>> plt.figure()<Figure size 640x480 with 0 Axes>>>> plt.plot(x, y1)[<matplotlib.lines.Line2D object at 0x000001B13E843448>]>>> plt.figure()<Figure size 640x480 with 0 Axes>>>> plt.plot(x, y2)[<matplotlib.lines.Line2D object at 0x000001B140DA4848>]>>> plt.show() 執行結果 定義圖片的名稱 執行結果: 可以看出上面的Figure後面的數字變了,變成我們指定的2跟3 定義不同圖片的大小 >>> import matplotlib.pyplot as plt>>> import numpy as np>>> x = np.linspace(-1, 1, 100)>>> y1 = 2 * x + 1>>> y2 = x ** 2>>> plt.figure(num = 2, figsize = (10, 10))<Figure size 1000x1000 with 0 Axes>>>> plt.plot(x, y1)[<matplotlib.lines.Line2D object at 0x000002D06984A348>]>>> plt.figure(num = 3)<Figure size 640x480 with 0 Axes>>>> plt.plot(x, y2)[<matplotlib.lines.Line2D object at 0x000002D069F2C348>]>>> plt.show() 執行結果 在其中一張圖中繪製兩條線,並調整其顏色、線的寬度、線的種類 補充: 線的種類https://matplotlib.org/stable/gallery/lines_bars_and_markers/linestyles.html >>> import matplotlib.pyplot as plt>>> import numpy as np>>> x = np.linspace(-1, 1, 100)>>> y1 = 2 * x + 1>>> y2 = x ** 2>>> plt.figure(num = 2, figsize = (10, 10))<Figure size 1000x1000 with 0 Axes>>>> plt.plot(x, y1)[<matplotlib.lines.Line2D object at 0x0000019653BF7888>]>>> plt.figure(num = 3)<Figure size 640x480 with 0 Axes>>>> plt.plot(x, y2)[<matplotlib.lines.Line2D object at 0x00000196542DB588>]>>> plt.plot(x, y1, color = 'red', linewidth = 2.8, linestyle = '--')[<matplotlib.lines.Line2D object at 0x00000196542F7F88>]>>> plt.show() 執行結果 3. 設定坐標軸 公開課程內容來源: Matplotlib 5 设置坐标轴1 (python 数据可视化教学教程) 限制x軸與y軸的範圍 ## 構建數據## 從-1到1,取50個點,會等分切割點x = np.linspace(-1, 1, 100)y1 = 2 * x + 1y2 = x ** 2## 視覺化plt.figure()plt.plot(x, y2)## 線的種類: https://matplotlib.org/stable/gallery/lines_bars_and_markers/linestyles.htmlplt.plot(x, y1, color = 'red', linewidth = 2.8, linestyle = '--')## 設定x軸和y軸的範圍空間plt.xlim((-1, 2.5))plt.ylim((-1, 1))## 顯示圖像plt.show() 執行結果 設定x軸與y軸標籤名稱 ## 構建數據## 從-1到1,取50個點,會等分切割點x = np.linspace(-1, 1, 100)y1 = 2 * x + 1y2 = x ** 2## 視覺化plt.figure()plt.plot(x, y2)## 線的種類: https://matplotlib.org/stable/gallery/lines_bars_and_markers/linestyles.htmlplt.plot(x, y1, color = 'red', linewidth = 2.8, linestyle = '--')## 設定x軸和y軸的範圍空間plt.xlim((-1, 2.5))plt.ylim((-1, 1))## 設定x軸與y軸標籤名稱plt.xlabel('Here is X')plt.ylabel('Here is Y')## 顯示圖像plt.show() 執行結果 改變刻度的數量與名稱 ## 構建數據## 從-1到1,取50個點,會等分切割點x = np.linspace(-1, 1, 100)y1 = 2 * x + 1y2 = x ** 2## 視覺化plt.figure()plt.plot(x, y2)plt.plot(x, y1, color = 'red', linewidth = 2.8, linestyle = '--')## 設定x軸和y軸的範圍空間plt.xlim((-1, 2.5))plt.ylim((-1, 1))## 設定x軸與y軸標籤名稱plt.xlabel('Here is X')plt.ylabel('Here is Y')## 改店x軸刻度new_xticks = np.linspace(-1, 2.5, 5)print(new_xticks)plt.xticks(new_xticks)## 改變y軸刻度plt.yticks([-1, 0, 0.5, 1, 1.5], ['really bad', 'bad', 'normal', 'good', 'really good'])## 顯示圖像plt.show() 執行結果 讓字體好看 ## 構建數據## 從-1到1,取50個點,會等分切割點x = np.linspace(-1, 1, 100)y1 = 2 * x + 1y2 = x ** 2## 視覺化plt.figure()plt.plot(x, y2)plt.plot(x, y1, color = 'red', linewidth = 2.8, linestyle = '--')## 設定x軸和y軸的範圍空間plt.xlim((-1, 2.5))plt.ylim((-1, 1))## 設定x軸與y軸標籤名稱plt.xlabel('Here is X')plt.ylabel('Here is Y')## 改店x軸刻度new_xticks = np.linspace(-1, 2.5, 5)plt.xticks(new_xticks)## 改變y軸刻度plt.yticks([-1, 0, 0.5, 1, 1.5], [r'$really\ bad$', r'$bad$', r'$normal$', r'$good$', r'$really\ good$'])## 顯示圖像plt.show() 執行結果 將特殊符號帶入標籤名稱 將數學形式的Alpha放入刻度標籤名稱 ## 構建數據## 從-1到1,取50個點,會等分切割點x = np.linspace(-1, 1, 100)y1 = 2 * x + 1y2 = x ** 2## 視覺化plt.figure()plt.plot(x, y2)plt.plot(x, y1, color = 'red', linewidth = 2.8, linestyle = '--')## 設定x軸和y軸的範圍空間plt.xlim((-1, 2.5))plt.ylim((-1, 1))## 設定x軸與y軸標籤名稱plt.xlabel('Here is X')plt.ylabel('Here is Y')## 改店x軸刻度new_xticks = np.linspace(-1, 2.5, 5)plt.xticks(new_xticks)## 改變y軸刻度plt.yticks([-1, 0, 0.5, 1, 1.5], [r'$really\ bad$', r'$bad$', r'$normal$', r'$good\ \alpha$', r'$really\ good$'])## 顯示圖像plt.show() 執行結果 公開課程內容來源: https://www.youtube.com/watch?v=w83mFG5tyW4&list=PLXO45tsB95cKiBRXYqNNCw8AUo6tYen3l&index=6 修改坐標軸的位置 使用gca - get current axis ## 構建數據## 從-1到1,取50個點,會等分切割點x = np.linspace(-1, 1, 100)y1 = 2 * x + 1y2 = x ** 2## 視覺化plt.figure()plt.plot(x, y2)plt.plot(x, y1, color = 'red', linewidth = 2.8, linestyle = '--')## 設定x軸和y軸的範圍空間plt.xlim((-1, 2.5))plt.ylim((-1, 1))## 設定x軸與y軸標籤名稱plt.xlabel('Here is X')plt.ylabel('Here is Y')## 改店x軸刻度new_xticks = np.linspace(-1, 2.5, 5)plt.xticks(new_xticks)## 改變y軸刻度plt.yticks([-1, 0, 0.5, 1, 1.5], [r'$really\ bad$', r'$bad$', r'$normal$', r'$good\ \alpha$', r'$really\ good$'])## 修改坐標軸位置ax = plt.gca()## 指定脊梁 - 就是原本圖軸的四個邊框## 將右邊和上面的軸設置為不顯示ax.spines['right'].set_color('none')ax.spines['top'].set_color('none')## 用下面的軸代替x的座標軸ax.xaxis.set_ticks_position('bottom')## 用左邊的軸代替y的座標軸ax.yaxis.set_ticks_position('left')## 移動x軸與y軸位置## 設定橫坐標的位置會在縱座標y的0值位置ax.spines['bottom'].set_position(('data', 0))## 除了data也可以設定axes或outward來移動座標軸## axes會用百分比的方式來移動,像是要移動的距離為y軸百分之幾的位置## 設定縱坐標的位置會在橫座標y的0值位置ax.spines['left'].set_position(('data', 0))## 顯示圖像plt.show() 執行結果
-
柱狀圖
本节代码: https://github.com/MorvanZhou/tutorials/blob/master/matplotlibTUT/plt11_bar.pymatplotlib 中的 bar 条形图, 柱状图是如何使用的呢. 这就是一个简单好玩的例子.Matplotlib 播放列表: https://...
-
Subplot
本节代码: https://github.com/MorvanZhou/tutorials/blob/master/matplotlibTUT/plt15_subplot.pymatplotlib 是可以组合许多的小图,放在一张大图里面显示的. 使用到的方法叫作 subplot.Matplotlib 播放列表: ...
-
3D圖
本节代码: https://github.com/MorvanZhou/tutorials/blob/master/matplotlibTUT/plt14_3d.py使用matplotlib 展示3d 图像的效果. 还有3d 图像的等高线图.Matplotlib 播放列表: https://www.youtube...
-
-
1/12:NumPy & Pandas介紹 和 numpy屬性和 numpy array的創建
-
1 numpy & pandas 有什么用? (教学教程) - YouTube
详细文字教程: https://morvanzhou.github.io/tutorials/python3 简单教学教程numpy & pandas 都是 python 科学运算中必不可少的组成部分.学会应用它们会对数据分析和机器学习有很大的帮助播放列表: https://www.youtube.com/pla...
-
3 numpy 属性 (教学教程) - YouTube
详细文字教程: https://morvanzhou.github.io/tutorials/python3 简单教学教程numpy 的属性基本上有这几种常用到的,np.sizenp.shapenp.ndim播放列表: https://www.youtube.com/playlist?list=PLXO45tsB...
-
4 numpy 的创建 array (教学教程) - YouTube
详细文字教程: https://morvanzhou.github.io/tutorials/python3 简单教学教程创建 array 有很多形式.具体可以参考:https://docs.scipy.org/doc/numpy-dev/user/quickstart.html播放列表: https://www...
-
numpy & pandas 介紹 - numpy屬性 - numpy array的創建
1. NumPy與Pandas介紹 課程資料來源: 1 numpy & pandas 有什么用? (教学教程) 應用的地方 Data Analysis 數據分析 Machine Learning 機器學習 Deep Learning 深度學習 當然有相當多的實務應用上都會使用它們,像是數據前處理、數據視覺化等等,都會透過它們來將資料進行一個清理與計算 補充: NumPy是什麼? 說明:Numerical Python(數值Python)的縮寫,它提供了強大的接口,讓我們存儲和操作密集的數據緩衝區(dense data buffers) Python關聯:NumPy的數組像是Python內建的列表(list)型態,但是NumPy數組在儲存和操作大量數據時,提供了比Python本身更好的效能 重要性:NumPy數組接近是整個Python數據科學領域工具鏈的核心,許多我們所使用的數據分析與處理套件都是以它為基礎構建的 為什麼要使用NumPy和Pandas? 它所消耗的電腦資源相當少: 因為它採用矩陣運算,所以會比Python原生自帶的字典Dictionary和列表快非常多 運算速度非常快: 由於NumPy和Pandas都是採用C語言來撰寫的,而Pandas是基於NumPy所開發的,所以算是NumPy的升級版本 補充: 為什麼NumPy的數組進行計算操作時是非常快的? 計算NumPy的數組可以是非常快,也可以是非常慢的,然而快的原因: 向量化的操作 都是透過 NumPy 的通用函式(ufuncs : Universal Functions)來實現的 例如: 我們今天要拿兩個矩陣進行計算,如果都用Python字典Dictionary或是列表一個一個相加就會比較慢,如果使用NumPy的向量化操作就會快非常多 2. NumPy屬性 課程資料來源: 3 numpy 属性 (教学教程) 導入NumPy套件 ## 導入NumPy套件 import numpy as np 將列表轉換為矩陣 ## 將列表轉化為矩陣 array = np.array([[2,4,6], [3,7,9], [1,3,8]]) array 執行結果 array([[2, 4, 6], [3, 7, 9], [1, 3, 8]]) 數組的屬性 - 維度、形狀、大小 ## 數組維度 print('number of dim: ', array.ndim) ## 數組的形狀 - 行數核列數 print('array shape: ', array.shape) ## 數組的大小 - 元素個數 print('size: ', array.size) 執行結果 number of dim: 2array shape: (3, 3)size: 9 3. NumPy創建數組Array 課程資料來源: 4 numpy 的创建 array (教学教程) 簡單創建一個數組 ## 創建一個數組 a = np.array([2,6,8]) print(a) 執行結果 [2 6 8] 指定創建數組的數據類型 整數 ## 指定創建數組的數據類型 a = np.array([2,6,8], dtype = np.int) print(a.dtype) a = np.array([2,6,8], dtype = np.int64) print(a.dtype) 執行結果 int32int64 浮點數 ## 指定創建數組的數據類型 a = np.array([2,6,8], dtype = np.float) print(a.dtype) a = np.array([2,6,8], dtype = np.float32) print(a.dtype) 執行結果 float64 float32 創建特定的數組 創建各類型數組的方法 array: 創建數組 dtype: 數據類型 zeros: 創建全為0的數組 ones: 創建全為1的數組 empty: 創建接近0的數組 arange: 指定創建數組裡面的數據範圍值 linspace: 構建線段的數據值 reshape: 改變數組形狀 array ## 創建數組 a = np.array([[1,2,3],[4,5,6]]) print(a) 執行結果 [[1 2 3] [4 5 6]] zeros ## 創建值全為0的5行6列數組 a = np.zeros((5,6)) print(a) 執行結果 [[0. 0. 0. 0. 0. 0.] [0. 0. 0. 0. 0. 0.] [0. 0. 0. 0. 0. 0.] [0. 0. 0. 0. 0. 0.] [0. 0. 0. 0. 0. 0.]] ones ## 創建值全為1的5行6列數組 a = np.ones((5,6)) print(a) 執行結果 [[1. 1. 1. 1. 1. 1.] [1. 1. 1. 1. 1. 1.] [1. 1. 1. 1. 1. 1.] [1. 1. 1. 1. 1. 1.] [1. 1. 1. 1. 1. 1.]] ones + 指定dtype ## 創建值全為1的5行6列數組,指定數據類型為int a = np.ones((5,6), dtype = np.int) print(a) print(a.dtype) 執行結果 [[1 1 1 1 1 1] [1 1 1 1 1 1] [1 1 1 1 1 1] [1 1 1 1 1 1] [1 1 1 1 1 1]]int32 empty ## 創建一個全空,但每個元素值都接近於0的數組 a = np.empty((4,5)) print(a) ## 創建一個全空,但每個元素值都接近於0的數組,並指定數據類型為int b = np.empty((4,5), dtype = np.int) print(b) 執行結果 [[6.23042070e-307 4.67296746e-307 1.69121096e-306 9.34609111e-307 1.33511018e-306] [1.33511969e-306 6.23037996e-307 6.23053954e-307 9.34609790e-307 8.45593934e-307] [9.34600963e-307 3.56036603e-307 1.37961641e-306 1.37961302e-306 1.11259940e-306] [1.60219035e-306 1.11261570e-306 1.06811354e-306 8.34448533e-308 1.21347091e+295]][[ -13901544 605 45 0 0] [ 0 0 0 0 1819042080] [1634607739 975332717 1685353250 578057583 1702109740] [ 975336568 1869375010 875983969 1818652252 863265135]] arange ## 創建一個指定範圍的數組: 0~60,中間隔5的值 a = np.arange(0,60,5)print(a) 執行結果 [ 0 5 10 15 20 25 30 35 40 45 50 55] linspace ## 創建線段行數據 - 1~20之間切10個點 a = np.linspace(1,20,10)print(a) 執行結果 [ 1. 3.11111111 5.22222222 7.33333333 9.44444444 11.55555556 13.66666667 15.77777778 17.88888889 20. ] reshape ## 改變數組形狀 a = np.linspace(1,20,10).reshape((5,2))print(a) 執行結果 [[ 1. 3.11111111] [ 5.22222222 7.33333333] [ 9.44444444 11.55555556] [13.66666667 15.77777778] [17.88888889 20. ]] 4. 補充閱讀 NumPy的屬性與操作 NumPy 的各種用法 - 讀書筆記 - Python Data Science Handbook - Python數據科學 - NumPy Array的屬性與操作(串聯與切割 - Concatenate、hstack、vstack、split、vsplit、 hsplit) - NumPy Array的各種計算方法 - UFuncs - #6
-
-
1/12:NumPy的基礎運算
-
5 numpy的基础运算 (教学教程) - YouTube
详细文字教程: https://morvanzhou.github.io/tutorials/python3 numpy 简单教学教程numpy 中的加减乘除和 python 的类似.但矩阵的运算可能就不太一样.矩阵的乘法是以 np.dot() 的形式.播放列表: https://www.youtube.com/...
-
6 numpy的基础运算2 (教学教程) - YouTube
详细文字教程: https://morvanzhou.github.io/tutorials/python3 简单教学教程今天讲到了:np.argmax()np.argmin()np.average()np.mean()np.median()np.cumsum()np.diff()np.nonzero()np.s...
-
NumPy基礎運算
1. NumPy 基礎運算 - part 1 課程資料來源: 5 numpy的基础运算 (教学教程) 創建兩個Array import numpy as np a = np.array([10,20,30,40,50,60,70,80]) b = np.arange(8) print(a) print(b) 執行結果 [10 20 30 40 50 60 70 80][0 1 2 3 4 5 6 7] 相減 c = a - b print(c) 執行結果 [10 19 28 37 46 55 64 73] 相加 c = a + b print(c) 執行結果 [10 21 32 43 54 65 76 87] 相乘 c = a * b print(c) 執行結果 [ 0 20 60 120 200 300 420 560] 平方 c = a**2print(c)c = b**2 print(c) 執行結果 [ 100 400 900 1600 2500 3600 4900 6400][ 0 1 4 9 16 25 36 49] 三角函數 c = 60 * np.sin(a) print(c)c = 80 * np.cos(b) print(c)c = 100 * np.tan(c) print(c) 執行結果 [-32.64126665 54.77671504 -59.28189745 44.70678963 -15.74249122 -18.28863727 46.43344089 -59.63331924][ 80. 43.22418447 -33.29174692 -79.19939973 -52.29148967 22.69297484 76.81362293 60.31218035][900.36549456 -94.68656446 317.61189136 -77.54375755 204.29086558 84.54150965 638.32447047 71.68114405] 邏輯判斷 print(b<6) print(a>60) print(a == 10) 執行結果 [ True True True True True True False False][False False False False False False True True][ True False False False False False False False] 建立多維度矩陣 ## 建立2x2 二維矩陣 a = np.array([[0, 1], [1, 1]]) b = np.arange(4).reshape((2,2)) print(a) print(b) 執行結果 [[0 1] [1 1]][[0 1] [2 3]] 矩陣乘法運算 補充: 矩陣內積(dot product)運算 numpy.dot()函数用法 內積定義 dot 用法一 c = a * b c_dot = np.dot(a, b )print(c) print(c_dot) 執行結果 [[0 1] [2 3]][[2 3] [2 4]] dot用法二 c_dot_2 = a.dot(b) print(c_dot_2) 執行結果 [[2 3] [2 4]] 補充:算法 總和、最大值、最小值 - Sum()、Min()、Max() 使用 import numpy as np a = np.random.random((5,6)) print(a) 執行結果 [[0.22667025 0.24476951 0.29306952 0.3450058 0.63912861 0.79662982] [0.88662849 0.65370446 0.6548403 0.20491901 0.40666716 0.81507563] [0.13013511 0.28810707 0.24427537 0.16024315 0.42845645 0.74784296] [0.10849957 0.04899922 0.41436152 0.48937569 0.83951887 0.04038496] [0.96675396 0.38796374 0.0566646 0.56787626 0.70060591 0.8537359 ]] 計算總和、最大值、最小值 print(np.sum(a)) print(np.max(a)) print(np.min(a)) 執行結果 13.6409088774131280.96675395996751720.04038496110920331 針對軸的方向進行查找 axis = 1: 以行來查找 axis = 0: 以列來查找 print("a: ", a) print("sum: ", np.sum(a, axis = 0)) print("min: ", np.min(a, axis = 1)) print("max: ", np.max(a, axis = 1)) 執行結果 a: [[0.22667025 0.24476951 0.29306952 0.3450058 0.63912861 0.79662982] [0.88662849 0.65370446 0.6548403 0.20491901 0.40666716 0.81507563] [0.13013511 0.28810707 0.24427537 0.16024315 0.42845645 0.74784296] [0.10849957 0.04899922 0.41436152 0.48937569 0.83951887 0.04038496] [0.96675396 0.38796374 0.0566646 0.56787626 0.70060591 0.8537359 ]]sum: [2.31868738 1.62354401 1.66321131 1.76741992 3.014377 3.25366926]min: [0.22667025 0.20491901 0.13013511 0.04038496 0.0566646 ]max: [0.79662982 0.88662849 0.74784296 0.83951887 0.96675396] 2. NumPy基礎運算 - part 2 課程資料來源: 6 numpy的基础运算2 (教学教程) 創建數組 import numpy as np A = np.arange(2, 18).reshape((4, 4)) print(A) 執行結果 [[ 2 3 4 5] [ 6 7 8 9] [10 11 12 13] [14 15 16 17]] 找尋最大值與最小值位置索引 ## 找尋最小值位置索引 print(np.argmin(A)) ## 找尋最大值位置索引 print(np.argmax(A)) 執行結果 015 均值 print(np.mean(A)) print(np.average(A)) print(A.mean()) 執行結果 9.59.59.5 中位數 # print(A.median()) np.medium(A) 執行結果 AttributeError: module 'numpy' has no attribute 'medium' 錯誤原因: 沒有這個NumPy屬性用法 參考: https://stackoom.com/question/2iJ5b 累加 print(np.cumsum(A)) 執行結果 [ 2 5 9 14 20 27 35 44 54 65 77 90 104 119 135 152] 累差 print(np.diff(A)) 執行結果 [[1 1 1] [1 1 1] [1 1 1] [1 1 1]] 得到陣列Array中非零元素所在的位置索引 補充: np.nonzeros用法 print(A) print(np.nonzero(A)) 執行結果 [[ 2 3 4 5] [ 6 7 8 9] [10 11 12 13] [14 15 16 17]](array([0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3], dtype=int64), array([0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3], dtype=int64)) 自動排序 import numpy as np A = np.arange(18, 2, -1).reshape((4,4)) print(A) ## 排序 print(np.sort(A)) 執行結果 [[18 17 16 15] [14 13 12 11] [10 9 8 7] [ 6 5 4 3]][[15 16 17 18] [11 12 13 14] [ 7 8 9 10] [ 3 4 5 6]] 矩陣轉置 print(A) print(A.T) print(np.transpose(A)) 執行結果 [[18 17 16 15] [14 13 12 11] [10 9 8 7] [ 6 5 4 3]][[18 14 10 6] [17 13 9 5] [16 12 8 4] [15 11 7 3]][[18 14 10 6] [17 13 9 5] [16 12 8 4] [15 11 7 3]] clip用法: 將比指定的最小值小的元素轉為指定的最小值,將比指定的最大值大的元素轉為指定的最大值 print(A) print(np.clip(A, 6, 16)) 執行結果 [[18 17 16 15] [14 13 12 11] [10 9 8 7] [ 6 5 4 3]][[16 16 16 15] [14 13 12 11] [10 9 8 7] [ 6 6 6 6]]
-
-
1/19:NumPy的索引和合併
-
7 numpy的索引 (教学教程) - YouTube
详细文字教程: https://morvanzhou.github.io/tutorials/python3 简单教学教程我们了解了如何对 numpy array 进行索引, 可以用到一下各种形式:A[2, 3]A[:, 1]A[1] = A[1, :]for row in A: print(row)for...
-
8 numpy的 array 合并 (教学教程) - YouTube
详细文字教程: https://morvanzhou.github.io/tutorials/python3 简单教学教程numpy array 都可以进行两个或多个 array 的横向或纵向的合并.我们可以用到:np.vstack((A,B)) # 纵向合并np.stack((A,B)) # 横向合并或者...
-
NumPy索引和合併
1. NumPy 索引 課程資料來源: 7 numpy的索引 (教学教程) 一維索引 單個索引 import numpy as np ## 創建一維數組 A = np.arange(2, 18) print(A) ## 索引第七個元素 print(A[6]) 執行結果 [ 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17] 8 二維索引 索引行 ## 創建二維數組 A = np.arange(2, 18).reshape((4,4)) print(A) ## 索引第四行 print(A[3]) 執行結果 [[ 2 3 4 5] [ 6 7 8 9] [10 11 12 13] [14 15 16 17]] [14 15 16 17] 單個索引 第一種方法 ## 索引第二行第三列 print(A[1][2]) 執行結果 8 第二種方法 ## 索引第二行第三列 print(A[1, 2]) 執行結果 8 範圍索引 ## 索引第二行的第二列到第三列 print(A[1, 1:3]) 執行結果 [7 8] 逐列進行列印 ## 一行一行列印出來 for row in A: print(row) 執行結果 [2 3 4 5] [6 7 8 9] [10 11 12 13] [14 15 16 17] 逐行進行列印 ## 一列一列印出來 for column in np.transpose(A): print(column) 執行結果 [ 2 6 10 14] [ 3 7 11 15] [ 4 8 12 16] [ 5 9 13 17] 將多維矩陣進行展開變成一行的數組 import numpy as np A = np.arange(2,18).reshape((4,4)) print(A) print('Flatten: ', A.flatten()) print('Flatten: ', A.flat) for item in A.flat: print(item) 執行結果 [[ 2 3 4 5] [ 6 7 8 9] [10 11 12 13] [14 15 16 17]] Flatten: [ 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17] Flatten: <numpy.flatiter object at 0x0000028C54D32730> 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 2. NumPy Array 合併 課程資料來源: 8 numpy的 array 合并 (教学教程) 垂直合併 - np.vstack() import numpy as np ## 創建數組 A = np.array([1,2,3]) B = np.array([4,5,6]) ## 垂直合併 C = np.vstack((A,B)) print(C) 執行結果 [[1 2 3] [4 5 6]] 數組形狀 ## 列印出合併後的形狀 print(A.shape, B.shape, C.shape) 執行結果 (3,) (3,) (2, 3) 水平合併 - np.hstack() ## 水平合併 D = np.hstack((A,B)) print(D) print(A.shape, D.shape) 執行結果 [1 2 3 4 5 6] (3,) (6,) 轉置 - np.newaxis() print(A) print(A.shape) ## 水平轉置 print(A[np.newaxis, :]) print(A[np.newaxis, :].shape) ## 垂直轉置 print(A[:, np.newaxis]) print(A[:, np.newaxis].shape) 執行結果 [1 2 3] (3,) [[1 2 3]] (1, 3) [[1] [2] [3]] (3, 1) 將A、B先轉置,再進行垂直合併和水平合併 import numpy as np ## 創建數組,並轉成垂直 A = np.array([1,2,3])[:, np.newaxis] B = np.array([4,5,6])[:, np.newaxis] ## 垂直合併 C = np.vstack((A,B)) ## 水平合併 D = np.hstack((A,B)) print('A:') print(A) print('B:') print(B) print('C:') print(C) print('D:') print(D) print(A.shape, B.shape, C.shape, D.shape) 執行結果 A: [[1] [2] [3]] B: [[4] [5] [6]] C: [[1] [2] [3] [4] [5] [6]] D: [[1 4] [2 5] [3 6]] (3, 1) (3, 1) (6, 1) (3, 2) 多個矩陣合併 - np.concatenate() ## 多個數組合併 ## 垂直合併 E = np.concatenate((A, B, A, B), axis = 0) print(E) ## 水平合併 F = np.concatenate((A, B, A, B), axis = 1) print(F) 執行結果 [[1] [2] [3] [4] [5] [6] [1] [2] [3] [4] [5] [6]] [[1 4 1 4] [2 5 2 5] [3 6 3 6]]
-
-
1/19:NumPy的Array分割 和 NumPy的copy與deep copy
-
9 numpy的 array分割 (教学教程) - YouTube
详细文字教程: https://morvanzhou.github.io/tutorials/python3 简单教学教程numpy array 同样是可以进行分割的,包括横向和纵向分割:A = np.arange(12).reshape((3,4))print(np.split(A, 4, axis=1))pr...
-
10 numpy的 copy & deep copy (教学教程) - YouTube
详细文字教程: https://morvanzhou.github.io/tutorials/python3 简单教学教程如果直接把 numpy array赋值给另一个变量,改变任意的一个变量都会影响到其他变量.比如:a = np.arange(4)b = aa[0] = 11那这是b[0] 也会变成11如果不想...
-
NumPy的Array分割 和 NumPy的copy與deep copy
1. NumPy Array 數組切割 課程資料來源: 9 numpy的 array分割 (教学教程) 創建數組 import numpy as np ## 創建數組 A = np.arange(20).reshape((5,4)) print(A) 執行結果 [[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11] [12 13 14 15] [16 17 18 19]] 等量縱向切割 - np.split ## 縱向分割 - 切割成兩段 print(np.split(A, 2, axis = 1)) 執行結果 [array([[ 0, 1], [ 4, 5], [ 8, 9], [12, 13], [16, 17]]), array([[ 2, 3], [ 6, 7], [10, 11], [14, 15], [18, 19]])] 等量橫向切割 - np.split ## 橫向切割 - 切成五段 print(np.split(A, 5, axis = 0)) 執行結果 [array([[0, 1, 2, 3]]), array([[4, 5, 6, 7]]), array([[ 8, 9, 10, 11]]), array([[12, 13, 14, 15]]), array([[16, 17, 18, 19]])] 等量切割報錯狀況 ## 當遇到不等量的切割時會報錯 print(np.split(A, 2, axis = 0)) ## 因為5沒辦法等量切割成兩段 執行結果 ValueError: array split does not result in an equal division 報錯原因: 因為5沒辦法等量切割成兩段 不等量切割 - array_split print(A) ## 不等量的切割 print(np.array_split(A, 2, axis = 1)) 執行結果 [[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11] [12 13 14 15] [16 17 18 19]] [array([[ 0, 1], [ 4, 5], [ 8, 9], [12, 13], [16, 17]]), array([[ 2, 3], [ 6, 7], [10, 11], [14, 15], [18, 19]])] 更多切割方法 - np.hsplit、np.vsplit print(A) ## 水平切割 等同於np.split(A, 5, axis = 0) print(np.hsplit(A, 2)) ## 垂直切割 等同於np.split(A, 2, axis = 1) print(np.vsplit(A, 5)) 執行結果 [[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11] [12 13 14 15] [16 17 18 19]] [array([[ 0, 1], [ 4, 5], [ 8, 9], [12, 13], [16, 17]]), array([[ 2, 3], [ 6, 7], [10, 11], [14, 15], [18, 19]])] [array([[0, 1, 2, 3]]), array([[4, 5, 6, 7]]), array([[ 8, 9, 10, 11]]), array([[12, 13, 14, 15]]), array([[16, 17, 18, 19]])] 2. NumPy copy & deep copy 講解 課程資料來源: 10 numpy的 copy & deep copy (教学教程) 創建數組 import numpy as np a = np.arange(6) print(a) 執行結果 [0 1 2 3 4 5] 使用 = 來創建一樣的數組 ## 賦值 b = a c = a d = b print(a, b, c, d) 執行結果 [0 1 2 3 4 5] [0 1 2 3 4 5] [0 1 2 3 4 5] [0 1 2 3 4 5] 更改A的時候會同時影響所有用=創建的數組 ## 當改變a的時候,b、c、d都會跟著改變 a[0] = 11 print(a, b, c, d) ## 判斷b、c、d是否與a一樣 print(b is a) print(c == a) print(d is a) 執行結果 [11 1 2 3 4 5] [11 1 2 3 4 5] [11 1 2 3 4 5] [11 1 2 3 4 5] True [ True True True True True True] True 更改D也同時會影響A、B、C ## 更改d值,a、b、c也會更著改變 d[2:5] = [6,6,6] print(a, b, c, d) 執行結果 [11 1 6 6 6 5] [11 1 6 6 6 5] [11 1 6 6 6 5] [11 1 6 6 6 5] 使用copy來構建複本,當A更改後就不會影響COPY所創建出來的複本 ## 使用copy創建a的複本e,改變a的時候就不會影響b e = a.copy() print(e) a[1] = 100 print(a) print(e) print(a is e) 執行結果 [ 11 100 6 6 6 5] [ 11 100 6 6 6 5] [ 11 100 6 6 6 5] False
-
-
1/26、1/28pands教學
-
pandas的基本介绍
详细文字教程: https://morvanzhou.github.io/tutorials/python3 pandas 基础 教学教程本节练习代码: https://github.com/MorvanZhou/tutorials/blob/master/numpy%26pandas/11_pandas_int...
-
pandas選擇數據
详细文字教程: https://morvanzhou.github.io/tutorials/python3 pandas 基础 教学教程本节练习代码: https://github.com/MorvanZhou/tutorials/blob/master/numpy%26pandas/12_selection....
-
pandas設定值
详细文字教程: https://morvanzhou.github.io/tutorials/python3 pandas 基础 教学教程本节练习代码: https://github.com/MorvanZhou/tutorials/blob/master/numpy%26pandas/13_set_value....
-
pandas處理丟失數據
详细文字教程: https://morvanzhou.github.io/tutorials/python3 pandas 基础 教学教程本节练习代码: https://github.com/MorvanZhou/tutorials/blob/master/numpy%26pandas/14_nan.py有时候我...
-
pandas導入導出
详细文字教程: https://morvanzhou.github.io/tutorials/python3 pandas 基础 教学教程本节练习代码: https://github.com/MorvanZhou/tutorials/tree/master/numpy%26pandas/15_read_to使用 ...
-
pandas合併(concat)
详细文字教程: https://morvanzhou.github.io/tutorials/python3 pandas 基础 教学教程本节练习代码: https://github.com/MorvanZhou/tutorials/blob/master/numpy%26pandas/16_concat.pyp...
-
pandas合併(merge)
详细文字教程: https://morvanzhou.github.io/tutorials/python3 pandas 基础 教学教程本节练习代码: https://github.com/MorvanZhou/tutorials/blob/master/numpy%26pandas/17_merge.pypa...
-
pandas plot
详细文字教程: https://morvanzhou.github.io/tutorials/python3 pandas 基础 教学教程本节练习代码: https://github.com/MorvanZhou/tutorials/blob/master/numpy%26pandas/18_plot.pypan...
-