一、Python基礎
1.1 基本語法
行與縮進:
python最具特色的就是使用縮進來表示代碼塊,不需要使用大括號 {} 。
多行語句:
Python 通常是一行寫完一條語句,但如果語句很長,我們可以使用反斜杠()來實現多行語句,在 [], {}, 或 () 中的多行語句,不需要使用反斜杠(\)。
數字類型:
整數int、布爾型bool(true)、浮點數float和復數complex(1+2j、1.1+2.2j)。
字符串:
引號和雙引號使用完全相同,使用三引號(’’'或""")可以指定一個多行字符串。字符串可以用 + 運算符連接在一起,用 * 運算符重復。字符串有兩種索引方式,從左往右以 0 開始,從右往左以 -1 開始。
同一行顯示多條語句:
語句之間使用分號(;)分割
Print 輸出:
需要在變量末尾加上 end="":
import 與 from…import:
導入相應的模塊。
1.2 基本數據類型
Python3 中有六個標準的數據類型:
- Number(數字)
- String(字符串)
- List(列表)
- Tuple(元組)
- Set(集合)
- Dictionary(字典)
數字
Python3 支持 int、float、bool、complex(復數)。
通過使用del語句刪除單個或多個對象。例如:del var
基本數字運算包括:加+,減-,乘*,除法得到浮點數/,除法得到整數//,取余數%,乘方 ** 。
字符串
Python中的字符串用單引號 ’ 或雙引號 " 括起來,同時使用反斜杠 \ 轉義特殊字符。
Python中的字符串不能改變。
字符串可以用+運算符連接在一起,用*運算符重復。
Python 使用反斜杠()轉義特殊字符,如果你不想讓反斜杠發生轉義,可以在字符串前面添加一個 r,表示原始字符串,例如print(r’Ru\noob’)
函數 | 描述 |
---|---|
len(string) | 返回字符串長度 |
List(列表)
列表是寫在方括號 [] 之間、用逗號分隔開的元素列表。列表可以完成大多數集合類的數據結構實現,是 Python 中使用最頻繁的數據類型。
加號 + 是列表連接運算符,星號 * 是重復操作,這與字符串相似,與Python字符串不一樣的是,列表中的元素是可以改變的。
方法 | 描述 |
---|---|
list.append(obj) | 在列表末尾添加新的對象 |
list.count(obj) | 統計某個元素在列表中出現的次數 |
list.index(obj) | 從列表中找出某個值第一個匹配項的索引位置 |
list.insert(index, obj) | 將對象插入列表 |
list.pop([index=-1]) | 移除列表中的一個元素(默認最后一個元素),并且返回該元素的值 |
list.remove(obj) | 移除列表中某個值的第一個匹配項 |
list.reverse() | 反向列表中元素 |
list.sort( key=None, reverse=False) | 對原列表進行排序 |
list.clear() | 清空列表 |
Tuple(元組)
元組寫在小括號 () 里,元素之間用逗號隔開。元組(tuple)與列表類似,不同之處在于元組的元素不能修改。其實,可以把字符串看作一種特殊的元組。
方法 | 描述 |
---|---|
len(tuple) | 計算元組元素個數。 |
max(tuple) | |
min(tuple) | |
tuple(seq) | 將列表轉換為元組。 |
Set(集合)
使用大括號 { } 或者 set() 函數創建集合,注意:創建一個空集合必須用 set() 而不是 { },因為 { } 是用來創建一個空字典。集合(set)是由一個或數個形態各異的大小整體組成的,構成集合的事物或對象稱作元素或是成員。
方法 | 描述 |
---|---|
s.add( x ) | 添加元素 |
s.update( x ) | 添加元素 |
s.remove( x ) | 移除元素 |
s.discard( x ) | 移除元素 |
len(s) | 計算集合元素個數 |
s.clear() | 清空集合 |
x in s | 判斷元素是否在集合中存在 |
Dictionary(字典)
字典是一種映射類型,字典用 { } 標識,它是一個無序的 鍵(key) : 值(value) 的集合。列表是有序的對象集合,字典是無序的對象集合。兩者之間的區別在于:字典當中的元素是通過鍵來存取的,而不是通過偏移存取。
構造函數 dict() 可以直接從鍵值對序列中構建字典dict([(‘Runoob’, 1), (‘Google’, 2), (‘Taobao’, 3)]),或者{‘Taobao’: 3, ‘Runoob’: 1, ‘Google’: 2}
數據類型轉換
float(x) 將x轉換到一個浮點數
str(x) 將對象 x 轉換為字符串
hex(x) 將一個整數轉換為一個十六進制字符串
1.3 運算
成員運算符
測試實例中包含了一系列的成員,包括字符串,列表或元組。
in 如果在指定的序列中找到值返回 True,否則返回 False。
not in 如果在指定的序列中沒有找到值返回 True,否則返回 False。
常用數學函數
函數 | 描述 |
---|---|
abs(x) | 絕對值 |
ceil(x) | 上取整 |
exp(x) | 求指數 |
foor(x) | 下取整 |
log(x) | |
log10(x) | 絕對值 |
round(x) | 四舍五入 |
sqrt(x) | 平方根 |
隨機數函數
函數 | 描述 |
---|---|
choice(seq) | 從序列的元素中隨機挑選一個元素 |
randrange ([start,] stop [,step]) | 從指定范圍內,按指定基數遞增的集合中獲取一個隨機數,基數默認值為 1 |
random() | 隨機生成下一個實數,它在[0,1)范圍內。 |
shuffle(lst) | 將序列的所有元素隨機排序 |
uniform(x, y) | 隨機生成下一個實數,它在[x,y]范圍內。 |
按概率隨機選取:np.random.choice([0, 1, 2, 3], p=[0.1, 0.0, 0.7, 0.2])
1.4 控制塊
條件控制
Python 中用 elif 代替了 else if,所以if語句的關鍵字為:if – elif – else。
循環語句
while 循環
for 語句 for
break 語句可以跳出 for 和 while 的循環體。
pass是空語句,是為了保持程序結構的完整性。
1.5 函數
定義函數
函數代碼塊以 def 關鍵詞開頭,后接函數標識符名稱和圓括號 ()。
傳遞變量
不可變,如 整數、字符串、元組。可變類型:列表,字典。如 fun(la),則是將 la 真正的傳過去,修改后fun外部的la也會受影響
1.6 輸入和輸出
函數 | 描述 |
---|---|
str() | 輸出函數 |
repr() | 輸出函數 |
open(filename, mode) | 打開文件 |
f.read() | 讀取一個文件的內容 |
f.readline() | 文件中讀取單獨的一行 |
f.readlines() | 返回該文件中包含的所有行。 |
f.write() | 將 string 寫入到文件中 |
f.seek(offset, from_what) | 改變文件當前的位置 |
f.close() | 關閉文檔 |
1.7 添加模塊路徑
import os,sys
parentdir = os.path.dirname(os.path.dirname(os.path.abspath(
file
)))
sys.path.insert(0,parentdir)
參考: Python3
二、Numpy
NumPy(Numerical Python) 是 Python 語言的一個擴展程序庫,支持大量的維度數組與矩陣運算,此外也針對數組運算提供大量的數學函數庫。NumPy 通常與 SciPy(Scientific Python)和 Matplotlib(繪圖庫)一起使用, 這種組合廣泛用于替代 MatLab,是一個強大的科學計算環境,有助于我們通過 Python 學習數據科學或者機器學習。
創建Ndarray
numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)
例如:
np.array([1,2,3])
np.array([1, 2, 3,4,5], ndmin = 2)
np.array([1, 2, 3], dtype = complex)
創建矩陣方法 | 描述 |
---|---|
numpy.empty(shape, dtype = float, order = ‘C’) | 創建未初始化的數組 |
numpy.zeros(shape, dtype = float, order = ‘C’) | 創建指定大小的數組,數組元素以 0 來填充 |
numpy.ones(shape, dtype = None, order = ‘C’) | 創建指定形狀的數組,數組元素以 1 來填充 |
numpy.arange(start, stop, step, dtype) | 根據 start 與 stop 指定的范圍以及 step 設定的步長,生成一個 ndarray |
np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None) | 創建一個一維數組,數組是一個等差數列構成的 |
np.logspace(start, stop, num=50, endpoint=True, base=10.0, dtype=None) | 用于創建一個于等比數列 |
屬性 | 描述 |
---|---|
ndarray.ndim | 秩,即軸的數量或維度的數量 |
ndarray.shape | 數組的維度,對于矩陣,n 行 m 列 |
ndarray.size | 數組元素的總個數,相當于 .shape 中 n*m 的值 |
numpy.reshape(arr, newshape, order=‘C’) | 不改變數據的條件下修改形狀 |
numpy.ndarray.flat | 數組元素迭代器 |
ndarray.flatten(order=‘C’) | 返回一份數組拷貝,對拷貝所做的修改不會影響原始數組 |
numpy.ravel(a, order=‘C’) | 展平的數組元素,順序通常是"C風格",修改會影響原始數組 |
numpy.transpose(arr, axes) | 對換數組的維度 |
numpy.expand_dims(arr, axis) | 在指定位置插入新的軸來擴展數組形狀 |
numpy.squeeze | 從給定數組的形狀中刪除一維的條目 |
numpy.concatenate((a1, a2, …), axis) | 函數用于沿指定軸連接相同形狀的兩個或多個數組 |
numpy.stack(arrays, axis) | 沿新軸連接數組序列 |
numpy.hstack | numpy.stack 函數的變體,它通過水平堆疊來生成數組 |
numpy.vstack | numpy.stack 函數的變體,它通過垂直堆疊來生成數組 |
numpy.split(ary, indices_or_sections, axis) | 沿特定的軸將數組分割為子數組 |
numpy.hsplit | 水平分割數組 |
numpy.vsplit | 沿著垂直軸分割 |
numpy.append(arr, values, axis=None) | 函數在數組的末尾添加值 |
numpy.insert(arr, obj, values, axis) | 函數在給定索引之前,沿給定軸在輸入數組中插入值。 |
Numpy.delete(arr, obj, axis) | 從輸入數組中刪除指定子數組的新數組 |
Numpy 字符串函數
函數 | 描述 |
---|---|
add() | 對兩個數組的逐個字符串元素進行連接 |
multiply() | 返回按元素多重連接后的字符串 |
center() | 居中字符串 |
title() | 將字符串的每個單詞的第一個字母轉換為大寫 |
lower() | 數組元素轉換為小寫 |
upper() | 數組元素轉換為大寫 |
split() | 指定分隔符對字符串進行分割,并返回數組列表 |
Numpy數學函數
隨機
np.random.shuffle(b)
三角函數
NumPy 提供了標準的三角函數:sin()、cos()、tan()。
arcsin,arccos,和 arctan 函數返回給定角度的 sin,cos 和 tan 的反三角函數。
numpy.around() 函數返回指定數字的四舍五入值。
計算函數
簡單的加減乘除: add(),subtract(),multiply() 和 divide()。
numpy.reciprocal() 函數返回參數逐元素的倒數。
numpy.power() 函數將第一個輸入數組中的元素作為底數,計算它與第二個輸入數組中相應元素的冪。
numpy.mod() 計算輸入數組中相應元素的相除后的余數。 函數 numpy.remainder() 也產生相同的結果。
統計函數
numpy.amin() 用于計算數組中的元素沿指定軸的最小值。
numpy.amax() 用于計算數組中的元素沿指定軸的最大值。
numpy.ptp()函數計算數組中元素最大值與最小值的差(最大值 - 最小值)。
numpy.median() 函數用于計算數組 a 中元素的中位數(中值)
numpy.mean() 函數返回數組中元素的算術平均值。 如果提供了軸,則沿其計算。
numpy.average() 函數根據在另一個數組中給出的各自的權重計算數組中元素的加權平均值。
numpy.std 標準差
numpy.var 方差
線性代數
numpy.dot() 對于兩個一維的數組,計算的是這兩個數組對應下標元素的乘積和(數學上稱之為內積)
numpy.vdot() 函數是兩個向量的點積。
numpy.inner() 函數返回一維數組的向量內積。
numpy.matmul 函數返回兩個數組的矩陣乘積。
numpy.linalg.det() 函數計算輸入矩陣的行列式。
numpy.linalg.solve() 函數給出了矩陣形式的線性方程的解。
numpy.linalg.inv() 函數計算矩陣的乘法逆矩陣。
IO
savetxt() 函數是以簡單的文本文件格式存儲數據,對應的使用 loadtxt() 函數來獲取數據。
np.loadtxt(FILENAME, dtype=int, delimiter=’ ')
np.savetxt(FILENAME, a, fmt="%d", delimiter=",")
廣播
廣播(Broadcast)是 numpy 對不同形狀(shape)的數組進行數值計算的方式, 對數組的算術運算通常在相應的元素上進行。當運算中的 2 個數組的形狀不同時,numpy 將自動觸發廣播機制。
參考 Numpy
常用功能
實現onehot
arr = np.arange(seq_length)
np.random.shuffle(arr)
x_one_hot = np.eye(seq_length)[arr]
三、Matplotlib
一個簡單的例子
import numpy as np
from matplotlib import pyplot as plt
x = np.arange(1,11)
y = 2 * x + 5
plt.title("Matplotlib demo")
plt.xlabel("x axis caption")
plt.ylabel("y axis caption")
plt.plot(x,y) plt.show()
四、Jupyter
修改Jupyter Notebook默認啟動目錄
4.1 直接通過 Jupyter Notebook 的快捷方式進入
首先找到Jupyter Notebook的快捷方式。
“目標”中最后一個參數默認是%USERPROFILE%/,就是默認啟動目錄。
將其修改為對應的路徑,注意路徑為為
反斜杠
。
4.2 通過anaconda進入
在anaconda prompt命令窗口中輸入
jupyter notebook --generate-config
這個命令的作用是生成 Jupyter notebook 的配置文件,主要目的只是為了找到這個文件的路徑。
找到 jupyter_notebook_config.py 的路徑并打此文件。
找到 c.NotebookApp.notebook_dir 這個變量,將你希望的路徑賦值給這個變量,并刪除這一行前面的“#”。修改后如下:
改完后保存。再次通過 Anaconda Navigator 進入 jupyter notebook 的時候會發現默認路徑已經更改。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
