Numpy個人知識體系
儒冠多誤身
20181202
文章目錄
- 通用函數ufunc
- 對ndarray中元素運算的函數
一元函數 unary ufunc
-
一元ufunc 說明 np.abs()、np.fbs() 計算整數、浮點數或複數的絕對值。
對於非複數值,可以使用更快的fbsnp.sqrt() 計算各元素的平方根:arr ** 0.5 np.square() 計算各元素的平方:arr ** 2 np.exp() 計算各元素的指數ex np.log()\np.log10\np.log2\np.log1p 分別:自然對數(e爲底數),底數爲10的log,底數爲2的log,log(1+x) np.sign() 計算各元素的正負號:1(正數),0(零),-1(負數) np.ceil() 向上取整 np.floor() 向下取整 np.rint() 四捨五入取整 np.modf() 小數部分和正數部分以兩個獨立數組返回arr1,arr2 = np.modf(arr3) np.isnan() 返回一個布爾型數組:“哪些值是NaN" np.isfinite()\np.isinf() 返回布爾型數組:哪些元素是有窮的,哪些元素是無窮的 np.cos()\np.sin()\np.tan() 普通型三角函數 np.cosh()\np.sinh()\np.tanh() 雙曲型三角函數 np.arccos()\np.arcsin()\np.arctan() 反三角函數 np.arccosh()\np.arcsinh()\np.arctanh() 反三角函數 np.logical_not() 計算各元素not x的真值
相當於-arr
二元函數 binary ufunc
-
二元ufunc 說明 np.add(arr1,arr2) 將數組對應元素相加 np.subtract() 從第一個數組中,減去第二個數組中的元素 np.multiply() 數組元素相乘 np.divide() 除法 np.floor_divide() 向下圓整除法(丟棄餘數) np.power() 對第一個數組中的元素A,根據第二個數組中相應元素B,計算AB np.maximum() 元素級的最大值計算 np.fmax() 忽略NaN的,元素級的最大值計算 np.minimum() 元素級的最小值計算 np.fmin() 忽略NaN的,元素級的最小值計算 np.mod() 元素級的求模計算(除法的餘數) np.copysign() 將第二個數組中的值的符號賦值給第一個數組中的值 np.greater() 執行元素級的比較>,產生布爾型數組 np.greater_equal() 執行元素級的比較>=,產生布爾型數組 np.less() 執行元素級的比較<,產生布爾型數組 np.less_equal() 執行元素級的比較<=,產生布爾型數組 np.equal() 執行元素級的比較==,產生布爾型數組 np.not_equal() 執行元素級的比較!=,產生布爾型數組 np.logical_and() 執行元素級的真值邏輯元素:& ,且 np.logical_or() 執行元素級的真值邏輯元素:|,或 np.logical_xor 執行元素級的真值邏輯元素:^,異或
矢量化三元表達式 np.where(arr1,第二個參數,第三個參數)
-
第二個和第三個參數不必是數組,可以是標量值
-
相當於
x if condition else y
的矢量化版本 -
np.where(arr1>0,1,-1)# 元素>0的返回1,否則返回-1
-
類似於MySQL的控制流函數
-
select education,salary,case education when '大專' then 1 when '本科' then 2 when '碩士' then 3 when '博士' then 4 else 0 end as tmp from demp_table;
-
相當於MySQL的三元表達式
-
select education,if(salary > 9,'優先','等待') as tmp from demp_talbe;
-
python的三元表達式結果1 if 表達式 else 結果2
-
a = 10 b = 20 r = a if a>b else b
-
python列表推倒時
-
list1 = [i*i for i in range(2,11,2)]#生成1~10之間的所有偶數
統計函數
arr.mean(axis = 1)# 可接受axis參數
np.mean(arr)# 均值
arr.sum(axis = 1)
np.sum(arr)
arr.std(axis = 1)#標準差,通過axis選擇軸
np.std(arr)
arr.var()#方差
np.var(arr)
arr.max(axis = 1)
np.max(arr)
arr.min(axis = 1)
np.min(arr)
arr.argmin()#最小元素的索引
np.argmin(arr)
arr.argmax()#最大元素的索引
np.argmax(arr)
arr.cumsum(0)# 列累加
arr.cumprod(1)# 行累積
創建
從列表、元組創建
np.array(list\tuple,dtype = np.float64)# 從序列創建,並指定每個元素的數據類型
使用numpy函數創建
np.arange(12).reshape(3,4)#返回ndarray取值[0,12),3行4列
np.ones((3,4))# 全1數組,3行4列
np.ones((2,3,4))# 最外層2個元素,每個元素3個維度,每個維度4個元素
np.zeros((3,4))# 全0數組,3行4列
np.full((2,3),val)#生成2行3列的數組 ,值都是val
np.eye(n)# 生成n*n的單位矩陣,對角線元素都是1,其餘都是0
np.ones_like(arr) # 根據arr的形狀,生成全1的ndarray
np.zeros_like(arr) # 根據arr的形狀,生成全0的數組
np.full_like(arr,val) #根據arr的形狀,生成值都爲val的數組
np.linspace(1,10,4) # 包括1和10,等間隔的生成4個元素的數組,浮點數
np.linspace(1,10,4,endpoint = False) #元素10不作爲生成數組的元素
np.concatenate((arr1,arr2)) # 合併數組arr1和arr2
隨機數組
隨機生成
-
np.random.rand(d0,d1,……,dn)
-
生成[0,1)之間的數據
-
np.random.rand(3,4) np.random.rand(2,3,4)#最外層2個元素,每個元素3個維度,每個維度4個元素
-
-
np.random.randn(d0,d1,……,dn)
- 返回數據,具有 標準正態分佈(高斯分佈)
- 均值爲1,標準差爲0
-
np.random.randint(low[high,shape,dtype])
-
返回隨機整數,範圍:[low,high)
-
shape:數組維度
-
dtype:數據類型,默認np.int
-
high不填時,範圍[0,low)
-
np.random.randint(-5,5,size=(2,2)) np.random.randint(1,5)# 返回1個[1,5)之間的隨機整數
-
-
np.random.seed(s)
-
使產生的隨機數組不變
-
np.random.seed(1) np.random.randint(100,200,(3,4)) #放在一起,再次調用,產生的隨機數組元素不變
-
隨機排列
- np.random.shuffle(arr)
- 根據數組arr的第1軸進行隨機排序
- 會改變數組arr
- np.random.permutation(arr)
- 根據arr的第1軸產生一個新的亂序數組
- arr不變
- np.random.choice(arr[,size,replace,p])
- 從一維數組arr中以概率p抽取元素,形成size形狀的數組
- replace表示是否可以重用元素
- p
- 設置元素被抽取的概率
- eg,p = arr/np.sum(arr)
隨機分佈
-
np.random.uniform(low,high,size)
- 產生具有均勻分佈的數組
- low 起始值
- high 結束值
- size 形狀
-
np.random.normal(loc.scale,size)
-
產生具有正態分佈的數組
-
loc 均值
-
scale 標準差
-
size 形狀
-
np.random.normal(9,2,50)#創建 包含50個元素的數組,且均值9,標準差2
-
-
np.random.poisson(lam.size)
- 產生泊松分佈的數組
- lam 隨機事件發生概率
- size 形狀