機器學習篇—Numpy數值計算基礎(中)

Numpy庫是支持 Python 語言的數值計算第三方庫,其擁有強大的多維數組處理與矩陣運算能力;是機器學習的必不可少的工具。本文是在學習了Numpy數值計算課程之後,所做的些許筆記。

Numpy生成隨機數

生成隨機數幾種方法

rand(d0, d1, ..., dn)
//[0, 1) 區間隨機數據填充,這些數據均勻分佈
示例:
np.random.rand(2,2)
結果:
array([[0.43496349, 0.04208836],
       [0.30749565, 0.71794792]])
randn(d0, d1, ..., dn)
//從標準正態分佈中返回一個或多個樣本值
示例:
np.random.randn(2,2)
一種結果:
array([[ 1.84516611, -0.75413734],
       [ 0.93102001, -1.34265842]])

標準正態分佈

randint(low, high, size, dtype)
//生成 [low, high) 的隨機整數,半開半閉區間。
示例:
np.random.randint(2, 5, (2,2))
結果:
array([[4, 2],
       [3, 4]])
random_sample(size)
//[0, 1) 區間內生成隨機浮點數
示例:
np.random.random_sample((2,2))
結果:
array([[0.3032088 , 0.15382612],
       [0.56393681, 0.29961032]])
choice(a, size, replace, p)
//在給定的數組裏隨機抽取幾個值
示例:
np.random.choice(6,3)
結果:
array([1, 4, 5])
//注意,必須爲一維數組:若np.random.choice(np.arange(6).reshape(3,2), 3),則報錯 a must be 1-dimensional

概率密度分佈

//使用時查閱即可
numpy.random.beta(a,b,size):從 Beta 分佈中生成隨機數。
numpy.random.binomial(n, p, size):從二項分佈中生成隨機數。
numpy.random.chisquare(df,size):從卡方分佈中生成隨機數。
numpy.random.dirichlet(alpha,size):從 Dirichlet 分佈中生成隨機數。
numpy.random.exponential(scale,size):從指數分佈中生成隨機數。
numpy.random.f(dfnum,dfden,size):從 F 分佈中生成隨機數。
numpy.random.gamma(shape,scale,size):從 Gamma 分佈中生成隨機數。
numpy.random.geometric(p,size):從幾何分佈中生成隨機數。
numpy.random.gumbel(loc,scale,size):從 Gumbel 分佈中生成隨機數。
numpy.random.hypergeometric(ngood, nbad, nsample, size):從超幾何分佈中生成隨機數。
numpy.random.laplace(loc,scale,size):從拉普拉斯雙指數分佈中生成隨機數。
numpy.random.logistic(loc,scale,size):從邏輯分佈中生成隨機數。
numpy.random.lognormal(mean,sigma,size):從對數正態分佈中生成隨機數。
numpy.random.logseries(p,size):從對數系列分佈中生成隨機數。
numpy.random.multinomial(n,pvals,size):從多項分佈中生成隨機數。
numpy.random.multivariate_normal(mean, cov, size):從多變量正態分佈繪製隨機樣本。
numpy.random.negative_binomial(n, p, size):從負二項分佈中生成隨機數。
numpy.random.noncentral_chisquare(df,nonc,size):從非中心卡方分佈中生成隨機數。
numpy.random.noncentral_f(dfnum, dfden, nonc, size):從非中心 F 分佈中抽取樣本。
numpy.random.normal(loc,scale,size):從正態分佈繪製隨機樣本。
numpy.random.pareto(a,size):從具有指定形狀的 Pareto II 或 Lomax 分佈中生成隨機數。
numpy.random.poisson(lam,size):從泊松分佈中生成隨機數。
numpy.random.power(a,size):從具有正指數 a-1 的功率分佈中在 01 中生成隨機數。
numpy.random.rayleigh(scale,size):從瑞利分佈中生成隨機數。
numpy.random.standard_cauchy(size):從標準 Cauchy 分佈中生成隨機數。
numpy.random.standard_exponential(size):從標準指數分佈中生成隨機數。
numpy.random.standard_gamma(shape,size):從標準 Gamma 分佈中生成隨機數。
numpy.random.standard_normal(size):從標準正態分佈中生成隨機數。
numpy.random.standard_t(df,size):從具有 df 自由度的標準學生 t 分佈中生成隨機數。
numpy.random.triangular(left,mode,right,size):從三角分佈中生成隨機數。
numpy.random.uniform(low,high,size):從均勻分佈中生成隨機數。
numpy.random.vonmises(mu,kappa,size):從 von Mises 分佈中生成隨機數。
numpy.random.wald(mean,scale,size):從 Wald 或反高斯分佈中生成隨機數。
numpy.random.weibull(a,size):從威布爾分佈中生成隨機數。
numpy.random.zipf(a,size):從 Zipf 分佈中生成隨機數。

Numpy數學函數

//三角函數
numpy.sin(x):三角正弦。
numpy.cos(x):三角餘弦。
numpy.tan(x):三角正切。
numpy.arcsin(x):三角反正弦。
numpy.arccos(x):三角反餘弦。
numpy.arctan(x):三角反正切。
numpy.hypot(x1,x2):直角三角形求斜邊。
numpy.degrees(x):弧度轉換爲度。
numpy.radians(x):度轉換爲弧度。
numpy.deg2rad(x):度轉換爲弧度。
numpy.rad2deg(x):弧度轉換爲度。
示例:
np.radians(180)
結果:
3.141592653589793
//雙曲函數
numpy.sinh(x):雙曲正弦。
numpy.cosh(x):雙曲餘弦。
numpy.tanh(x):雙曲正切。
numpy.arcsinh(x):反雙曲正弦。
numpy.arccosh(x):反雙曲餘弦。
numpy.arctanh(x):反雙曲正切。
示例:
np.sinh(6)
結果:
201.71315737027922

Numpy數據修約

//指在進行具體的數字運算前, 按照一定的規則確定一致的位數, 然後捨去某些數字後面多餘的尾數的過程。比如四捨五入。
numpy.around(a):平均到給定的小數位數。
numpy.round_(a):將數組舍入到給定的小數位數。
numpy.rint(x):修約到最接近的整數。
numpy.fix(x, y):向 0 舍入到最接近的整數。
numpy.floor(x):返回輸入的底部(標量 x 的底部是最大的整數 i)。
numpy.ceil(x):返回輸入的上限(標量 x 的底部是最小的整數 i).
numpy.trunc(x):返回輸入的截斷值。
示例:
a = np.random.randn(6)
np.rint(a)
結果:
array([ 0.92754855,  0.27373658, -0.9136258 , -2.01339339, -1.51977432,
        0.48426261])
array([ 1.,  0., -1., -2., -2.,  0.])

Numpy數組的數學運算

//求和、求積、差分
numpy.prod(a, axis, dtype, keepdims):返回指定軸上的數組元素的乘積。
numpy.sum(a, axis, dtype, keepdims):返回指定軸上的數組元素的總和。
numpy.nanprod(a, axis, dtype, keepdims):返回指定軸上的數組元素的乘積, 將 NaN 視作 1。
numpy.nansum(a, axis, dtype, keepdims):返回指定軸上的數組元素的總和, 將 NaN 視作 0。
numpy.cumprod(a, axis, dtype):返回沿給定軸的元素的累積乘積。
numpy.cumsum(a, axis, dtype):返回沿給定軸的元素的累積總和。
numpy.nancumprod(a, axis, dtype):返回沿給定軸的元素的累積乘積, 將 NaN 視作 1。
numpy.nancumsum(a, axis, dtype):返回沿給定軸的元素的累積總和, 將 NaN 視作 0。
numpy.diff(a, n, axis):計算沿指定軸的第 n 個離散差分。
numpy.ediff1d(ary, to_end, to_begin):數組的連續元素之間的差異。
numpy.gradient(f):返回 N 維數組的梯度。
numpy.cross(a, b, axisa, axisb, axisc, axis):返回兩個(數組)向量的叉積。
numpy.trapz(y, x, dx, axis):使用複合梯形規則沿給定軸積分。
示例:
a = np.arange(6).reshape(2,3)
np.sum(a,0)
結果:
array([[0, 1, 2],
       [3, 4, 5]])
       
array([3, 5, 7])
//指數與對數求解
numpy.exp(x):計算輸入數組中所有元素的指數。
numpy.log(x):計算自然對數。
numpy.log10(x):計算常用對數。
numpy.log2(x):計算二進制對數。
//
numpy.add(x1, x2):對應元素相加。
numpy.reciprocal(x):求倒數 1/x。
numpy.negative(x):求對應負數。
numpy.multiply(x1, x2):求解乘法。
numpy.divide(x1, x2):相除 x1/x2。
numpy.power(x1, x2):類似於 x1^x2。
numpy.subtract(x1, x2):減法。
numpy.fmod(x1, x2):返回除法的元素餘項。
numpy.mod(x1, x2):返回餘項。
numpy.modf(x1):返回數組的小數和整數部分。
numpy.remainder(x1, x2):返回除法餘數。
//求解矩陣和向量積
numpy.dot(a, b):求解兩個數組的點積。
numpy.vdot(a, b):求解兩個向量的點積。
numpy.inner(a, b):求解兩個數組的內積。
numpy.outer(a, b):求解兩個向量的外積。
numpy.matmul(a, b):求解兩個數組的矩陣乘積。
numpy.tensordot(a, b):求解張量點積。
numpy.kron(a, b):計算 Kronecker 乘積。
//其他的一些數學方法
numpy.angle(z, deg):返回復參數的角度。
numpy.real(val):返回數組元素的實部。
numpy.imag(val):返回數組元素的虛部。
numpy.conj(x):按元素方式返回共軛複數。
numpy.convolve(a, v, mode):返回線性卷積。
numpy.sqrt(x):平方根。
numpy.cbrt(x):立方根。
numpy.square(x):平方。
numpy.absolute(x):絕對值, 可求解複數。
numpy.fabs(x):絕對值。
numpy.sign(x):符號函數。
numpy.maximum(x1, x2):最大值。
numpy.minimum(x1, x2):最小值。
numpy.nan_to_num(x):用 0 替換 NaN。
numpy.interp(x, xp, fp, left, right, period):線性插值。
//矩陣運算方法
numpy.linalg.cholesky(a):Cholesky 分解。
numpy.linalg.qr(a ,mode):計算矩陣的 QR 因式分解。
numpy.linalg.svd(a ,full_matrices,compute_uv):奇異值分解。
numpy.linalg.eig(a):計算正方形數組的特徵值和右特徵向量。
numpy.linalg.eigh(a, UPLO):返回 Hermitian 或對稱矩陣的特徵值和特徵向量。
numpy.linalg.eigvals(a):計算矩陣的特徵值。
numpy.linalg.eigvalsh(a, UPLO):計算 Hermitian 或真實對稱矩陣的特徵值。
numpy.linalg.norm(x ,ord,axis,keepdims):計算矩陣或向量範數。
numpy.linalg.cond(x ,p):計算矩陣的條件數。
numpy.linalg.det(a):計算數組的行列式。
numpy.linalg.matrix_rank(M ,tol):使用奇異值分解方法返回秩。
numpy.linalg.slogdet(a):計算數組的行列式的符號和自然對數。
numpy.trace(a ,offset,axis1,axis2,dtype,out):沿數組的對角線返回總和。
numpy.linalg.solve(a, b):求解線性矩陣方程或線性標量方程組。
numpy.linalg.tensorsolve(a, b ,axes):爲 x 解出張量方程 a x = b
numpy.linalg.lstsq(a, b ,rcond):將最小二乘解返回到線性矩陣方程。
numpy.linalg.inv(a):計算逆矩陣。
numpy.linalg.pinv(a ,rcond):計算矩陣的(Moore-Penrose)僞逆。
numpy.linalg.tensorinv(a ,ind):計算 N 維數組的逆。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章