4.2 通用函數(shù):快速的元素級(jí)數(shù)組函數(shù)
np.sqrt(arr) np.exp(arr)
np.maximum(arr1,arr2) 計(jì)算數(shù)組arr1和arr2中元素級(jí)別最大的元素
a,b = np.modf(arr) 返回浮點(diǎn)數(shù)數(shù)組的小數(shù)和整數(shù)部分 a為小數(shù)部分 b為整數(shù)部分
通用函數(shù)有out參數(shù),可以使得數(shù)組原地操作
常見ufunc:
abs fabs(更快求絕對(duì)值) sqrt squre exp log log10 log2 log1p sign(元素正負(fù)號(hào))
ceil(大于等于該值的最小整數(shù)) floor(小于等于該值最大整數(shù))
rint(將各元素值四舍五入到最接近的整數(shù)捶码,保留dtype)
modf isnan isfinite isinf
cos cosh sin sinh tan tanh……
logical_and logical_not logical_or
add substract(數(shù)組元素相減) multiply divide/floor_divide(除法取整)
pow(A,B)(A的B次方) maximum fmax(忽略Nan) minimum fmin
mod copysign(復(fù)制第二個(gè)數(shù)組中元素符號(hào)到第一個(gè)數(shù)組中)
greater greater_equal less less_equal equal not_equal (等價(jià)于>,>=,<,<=,==,!=)
4.3 利用數(shù)組進(jìn)行數(shù)據(jù)處理
[X,Y] = np.meshgrid(x,y)
若x.shape[0] = m y.shape[0] = n陨仅,均為一維數(shù)組
則X.shape = Y.shape = (n,m) X每一行都是x的復(fù)制,Y的每一列都是y的復(fù)制
np.where 等價(jià)于 x if condition else y
x if condition else y 缺點(diǎn):1.大數(shù)組處理不快 2.無法用于多維數(shù)組
where(cond, arr1, arr2) cond值為true則選擇arr1中元素,反之選擇arr2中元素
sum(where(data != 0, (data-estimate) **2, 0)) 計(jì)算兩個(gè)矩陣差卸察,殘差平方求和
np.where(arr>0, 2, -2) arr中正值替換為2負(fù)值替換為-2
np.where(arr>0, 2, arr) arr中正值替換為2
多位數(shù)組中的where應(yīng)用 怎么理解numpy的where()既忆?
數(shù)學(xué)與統(tǒng)計(jì)方法
arr.mean() arr.mean(axis = 1)/arr.mean(1)計(jì)算行平均值 arr,mean(axis = 0) 計(jì)算列平均值
arr.sum() std 標(biāo)準(zhǔn)差 var 方差 min max argmin argmax最大值索引(默認(rèn)是平鋪的數(shù)組)
cumsum 所有元素的累計(jì)和 cumprod 所有元素的累計(jì)積
cumsum(axis=0) 從左到右計(jì)算每列累計(jì)和
sum() 可以用于計(jì)算布爾型數(shù)組中true值個(gè)數(shù)
any() 檢查數(shù)組中是否存在true值
all() 檢查數(shù)組元素是否全部為true值
arr.sort() 原地排序 arr.sort(1)/arr/sort(0) 按行/列排序
ndarray.sort(axis=-1, kind='quicksort', order=None) 原地排序
np.sort(a, axis=-1, kind='quicksort', order=None) 返回副本
np.unique(arr) 找出數(shù)組中的唯一值并返回已排序的結(jié)果(針對(duì)一維數(shù)組)
in1d(arr1,arr2) 返回arr1中的元素是否在arr2中的一個(gè)布爾型數(shù)組
intersect1d(arr1,arr2) 返回交集有序結(jié)果 union1d(arr1,arr2) 返回并集有序結(jié)果
setdiff1d(arr1,arr2) arr1 - arr2 差集
setxor1d(arr1,arr2) 對(duì)稱差集
4.4 輸入輸出
np.save(文件名,arr) 保存文件擴(kuò)展名為.npy,自動(dòng)加上
np.load(文件名.npy)
np.savez(文件名,a=arr1,b=arr2) 類似字典 文件擴(kuò)展名npz 保存多個(gè)數(shù)組
data = np.load(XXX) data['a'] data['b']
np.savez_compressed(XXX,a = arr1,b = arr2) 類似savez邑雅,數(shù)據(jù)壓縮很好的情況下使用
4.5 線性代數(shù)
arr1.dot(arr2) 矩陣乘法 等價(jià)于 np.dot(arr1,arr2)
from numpy.linalg import XXX
4.6 偽隨機(jī)數(shù)生成
np.random.normal(size = (3,3)) 產(chǎn)生正態(tài)分布樣本值
np.random.seed(1234) 更改隨機(jī)數(shù)種子
np.random.RandomState(1234) 創(chuàng)建一個(gè)與其它隔離的隨機(jī)數(shù)生成器
4.7 隨機(jī)漫步
待續(xù)……