Numpy
import numpy as np
arange() 用法跟Python的range差不多
%timeit 測試代碼的運算平均時長,一般默認(rèn)運行1000次
random.randn(n,m) 隨機(jī)生成符合正態(tài)分布的隨機(jī)值,會出現(xiàn)負(fù)值
random.rand(n,m)隨機(jī)生成[0,1)之間的隨機(jī)數(shù),沒有付值
數(shù)組 + , - ,* ,/ 符合矩陣的一般運算
數(shù)組.dtype 查詢數(shù)組的元素類型
數(shù)組.shape 查詢數(shù)組的結(jié)構(gòu)(幾行幾列)
數(shù)組.ndim 查詢數(shù)組的維數(shù)
np.array(普通列表) 普通列表轉(zhuǎn)化為Numpy的對象數(shù)組 - 數(shù)據(jù)類型必須一致
np.zeros() 產(chǎn)生一個由0組成的數(shù)組
np.zeros((行,列)) 產(chǎn)生一個幾行幾列的二維數(shù)組
np.ones((行,列)) 產(chǎn)生一個幾行幾列的二維數(shù)組,由1組成
np.empty((行,列,元素個數(shù))) 產(chǎn)生一個幾行幾列幾個元素的幾維數(shù)組
np.ones_like(a1) 將a1數(shù)組轉(zhuǎn)化為1組成
np.full((行,列),n) 產(chǎn)生一個由幾行幾列的數(shù)組,元素由n組成
np.eye(行,列) 產(chǎn)生一個幾行幾列的數(shù)組,對角線為1,其余為0
np.array(數(shù)組,dype=np.類型) 將數(shù)組轉(zhuǎn)化為指定的數(shù)據(jù)類型
數(shù)組.astype(np.類型) 方法明確的將一個數(shù)組從一個dtype轉(zhuǎn)換成另一個dtype 調(diào)用astype總會創(chuàng)建一個新的數(shù)組
數(shù)組/數(shù)組 自動補(bǔ)全-傳播/廣播
數(shù)組邏輯運算 >,<,= 返回布爾值的邏輯數(shù)組,邏輯數(shù)組可以作為數(shù)組的索引
數(shù)組[數(shù)組>4] - 取數(shù)組中大于4的元素
數(shù)組[下標(biāo)1:下標(biāo)2] = 新值 將數(shù)組下標(biāo)1到下標(biāo)2的值全部改成指定的值
Python中普通列表的切片操作對numpy的數(shù)組對象同樣適用
數(shù)組.copy() 拷貝一個新的數(shù)組
兩個數(shù)量一致的數(shù)組可以直接產(chǎn)生關(guān)聯(lián)
數(shù)組 == 值 可以返回一個布爾值得數(shù)組,用這個布爾數(shù)組可以作為另一個數(shù)組得索引
例如:
names = np.array(['張三','李四','王五','趙六','李四','王五'])
data = [[98,38,12,67],[98,45,12,47],[98,45,12,22],[98,77,12,67],[98,37,55,67],[66,45,77,99]]
data=np.array(data)
data[names == '李四'] # 這樣可以拿出李四得所有數(shù)據(jù)
# 數(shù)組[~條件] 可以取反 跟!= 效果一樣
數(shù)組[[下標(biāo)1,下標(biāo)2...]] - 可以按指定得下標(biāo)取出對應(yīng)行 (里面不用中括號的話,逗號左邊是行,右邊是列)
數(shù)組[1,2:] 這個表示取出第2行從第3列開始之后得數(shù)據(jù)
數(shù)組[[-1,-3]] 取出數(shù)組最后一行和倒數(shù)第三行
數(shù)組[[4,3,5,7]][:,[1,3]] 順序取出4,3,5,6行得第2個和第4個元素
數(shù)組[[3,4,5,6],[1,2,1,2]] 取出下標(biāo)是[3][1],[4][2],[5][1],[6][2]的元素
np.arange(15).reshape(3,5) 生成一個從0到14得3行5列的二維數(shù)組(元素的個數(shù)一定跟行列的乘積相等)
數(shù)組.T 數(shù)組轉(zhuǎn)置,坐標(biāo)轉(zhuǎn)化(橫縱坐標(biāo)相互調(diào)換)
np.dot(數(shù)組1,數(shù)組2) 就矩陣的內(nèi)積
數(shù)組.transpose((0,1)) 數(shù)組轉(zhuǎn)置,0,1,2分別代表了三個坐標(biāo)軸xyz,調(diào)換順序之后,原數(shù)組會根據(jù)調(diào)換的后的坐標(biāo)相應(yīng)改變

分析:
如果transpose后面的參數(shù)是(0,1,2) 就表示坐標(biāo)軸不變,如果變?yōu)?1,0,2)就相當(dāng)于x和y軸對換了
實際發(fā)生的變化就是原來下標(biāo)是010的那個元素就會變成到100的位置,那新的010的位置就會被原來的100位置的元素代替,相當(dāng)于互換了,而原來是110的,x和y軸兌換之后因為還是110,所以不發(fā)生變化。
數(shù)組.swapaxes(2,1) 坐標(biāo)軸互換位置,跟上面的原理差不多
數(shù)組.mean()就數(shù)組的平均數(shù)
數(shù)組.sum()求和
數(shù)組.sqrt()求開方
數(shù)組.exp() 返回自然對數(shù)e的冪次方
np.modf(數(shù)組) 分開一個小數(shù)的整數(shù)和小數(shù)部分,返回值為元組
points = np.arange(-5,5,0.01)
x,y = np.meshgrid(points,poinst)生成兩個數(shù)組,分別為x和y的橫縱坐標(biāo)陣列
z = np.sqrt(x**2 + y ** 2) 求坐標(biāo)之間的距離
%matplotlib inline 在瀏覽器中直接顯示圖像,不另起窗口
import matplotlib.pyplot as plt 導(dǎo)入畫圖工具
plt.imshow(z,cmap=plt.cm.Blues) 生成對應(yīng)圖像
plt.colorbar() 生成對應(yīng)參數(shù)

數(shù)組.where(條件數(shù)組,a,b) 條件為真取a,否則取b,類似python中三目運算符
數(shù)組.sum(axis=0) 這種統(tǒng)計函數(shù)后面跟axis=0或者1代表橫軸或縱軸
數(shù)組.mean(axis=1) 默認(rèn)axis可以省略

數(shù)組.cumsum(0)累加操作 0是橫軸,1是縱軸
數(shù)組.cumprod(0)累乘操作

數(shù)組.all() 返回布爾值,所有元素都是True才是True,否則為False
數(shù)組.sort()從小到大排序,也可以指定axis值
數(shù)組.unique()去重

np.save(‘名字’,元素) 保存為本地文件,類似pickle
np.load('文件名') 讀取本地文件
np.savez('文件名.npz',數(shù)據(jù)1,數(shù)據(jù)2)
np.savez_compressed() 壓縮格式
np.load('文件名.npz') 讀取出來是個字典
數(shù)組.dot(數(shù)組) 求內(nèi)積 等同于 數(shù)組 @ 數(shù)組
np.random.normal(size=(行,列)) 生成4行4列正態(tài)分布的隨機(jī)數(shù)
plt.scatter(x,y) 畫散點圖

rnd = np.random.RandomState(種子參數(shù)) 生成偽隨機(jī)數(shù),參數(shù)不同可以避免生成相同的隨機(jī)數(shù)