天天看點

numpy基本方法總結 NumPy基本方法

NumPy基本方法

一、數組方法

建立數組:arange()建立一維數組;array()建立一維或多元數組,其參數是類似于數組的對象,如清單等

讀取數組元素:如a[0],a[0,0]

數組變形:如b=a.reshape(2,3,4)将得到原數組變為2*3*4的三維數組後的數組;或是a.shape=(2,3,4)或a.resize(2,3,4)直接改變數組a的形狀

數組組合:水準組合hstack((a,b))或concatenate((a,b),axis=1);垂直組合vstack((a,b))或concatenate((a,b),axis=0);深度組合dstack((a,b))

數組分割(與數組組合相反):分别有hsplit,vsplit,dsplit,split(split與concatenate相對應)

将np數組變為py清單:a.tolist()

數組排序(小到大):列排列np.msort(a),行排列np.sort(a),np.argsort(a)排序後傳回下标

複數排序:np.sort_complex(a)按先實部後虛部排序

數組的插入:np.searchsorted(a,b)将b插入原有序數組a,并傳回插入元素的索引值

類型轉換:如a.astype(int),np的資料類型比py豐富,且每種類型都有轉換方法

條件查找,傳回滿足條件的數組元素的索引值:np.where(條件)

條件查找,傳回下标:np.argwhere(條件)

條件查找,傳回滿足條件的數組元素:np.extract([條件],a)

根據b中元素作為索引,查找a中對應元素:np.take(a,b)一維

數組中最小最大元素的索引:np.argmin(a),np.argmax(a)

多個數組的對應位置上元素大小的比較:np.maximum(a,b,c,…..)傳回每個索引位置上的最大值,np.minimum(…….)相反

将a中元素都置為b:a.fill(b)

每個數組元素的指數:np.exp(a)

生成等差行向量:如np.linspace(1,6,10)則得到1到6之間的均勻分布,總共傳回10個數

求餘:np.mod(a,n)相當于a%n,np.fmod(a,n)仍為求餘且餘數的正負由a決定

計算平均值:np.mean(a)

計算權重平均值:np.average(a,b),其中b是權重

計算數組的極差:np.pth(a)=max(a)-min(a)

計算方差(總體方差):np.var(a)

标準差:np.std(a)

算術平方根,a為浮點數類型:np.sqrt(a)

對數:np.log(a)

點積(計算兩個數組的線性組合):np.dot(a,b),即得到a*b(一維上是對應元素相乘,多元可将a*b視為矩陣乘法

修剪數組,将數組中小于x的數均換為x,大于y的數均換為y:a.clip(x,y)

所有數組元素乘積:a.prod()

數組元素的累積乘積:a.cumprod()

數組元素的符号:np.sign(a),傳回數組中各元素的正負符号,用1和-1表示

數組元素分類:np.piecewise(a,[條件],[傳回值]),分段給定取值,根據判斷條件給元素分類,并傳回設定的傳回值。

判斷兩數組是否相等: np.array_equal(a,b)

判斷數組元素是否為實數: np.isreal(a)

去除數組中首尾為0的元素:np.trim_zeros(a)

對浮點數取整,但不改變浮點數類型:np.rint(a)

二、數組屬性

1.擷取數組每一次元的大小:a.shape

2.擷取數組次元:a.ndim

3.元素個數:a.size

4.數組元素在記憶體中的位元組數:a.itemsize

5.數組位元組數:a.nbytes==a.size*a.itemsize

6.數組元素覆寫:a.flat=1,則a中數組元素都被1覆寫

7.數組轉置:a.T

三、矩陣方法

建立矩陣:np.mat(‘…’)通過字元串格式建立,np.mat(a)通過數組建立,也可用matrix或bmat函數建立

建立複合矩陣:np.bmat(‘A B’,’AB’),用A和B建立複合矩陣AB(字元串格式)

建立n*n維機關矩陣:np.eye(n)

矩陣的轉置:A.T

矩陣的逆矩陣:A.I

計算協方差矩陣:np.cov(x),np.cov(x,y)

計算矩陣的迹(對角線元素和):a.trace()

相關系數:np.corrcoef(x,y)

給出對角線元素:a.diagonal()

四、多項式

多項式拟合:poly= np.polyfit(x,a,n),拟合點集a得到n級多項式,其中x為橫軸長度,傳回多項式的系數

多項式求導函數:np.polyder(poly),傳回導函數的系數

得到多項式的n階導函數:多項式.deriv(m = n)

多項式求根:np.roots(poly)

多項式在某點上的值:np.polyval(poly,x[n]),傳回poly多項式在橫軸點上x[n]上的值

兩個多項式做差運算: np.polysub(a,b)

四、線性代數

估計線性模型中的系數:a=np.linalg.lstsq(x,b),有b=a*x

求方陣的逆矩陣:np.linalg.inv(A)

求廣義逆矩陣:np.linalg.pinv(A)

求矩陣的行列式:np.linalg.det(A)

解形如AX=b的線性方程組:np.linalg.solve(A,b)

求矩陣的特征值:np.linalg.eigvals(A)

求特征值和特征向量:np.linalg.eig(A)

Svd分解:np.linalg.svd(A)

五、機率分布

産生二項分布的随機數:np.random.binomial(n,p,size=…),其中n,p,size分别是每輪試驗次數、機率、輪數

産生超幾何分布随機數:np.random.hypergeometric(n1,n2,n,size=…),其中參數意義分别是物件1總量、物件2總量、每次采樣數、試驗次數

産生N個正态分布的随機數:np.random.normal(均值,标準差,N)

産生N個對數正态分布的随機數:np.random.lognormal(mean,sigma,N)

Matpoltlib簡單繪圖方法

引入簡單繪圖的包import matplotlib.pyplot as plt,最後用plt.show()顯示圖像

基本畫圖方法:plt.plot(x,y),plt.xlabel(‘x’),plt.ylabel(‘y’),plt.title(‘…’)

子圖:plt.subplot(abc),其中abc分别表示子圖行數、列數、序号

建立繪圖元件的頂層容器:fig = plt.figure()

添加子圖:ax = fig.add_subplot(abc)

設定橫軸上的主定位器:ax.xaxis.set_major_locator(…)

繪制方圖:plt.hist(a,b),a為長方形的左橫坐标值,b為柱高

繪制散點圖:plt.scatter(x,y,c = ‘..’,s = ..),c表示顔色,s表示大小

添加網格線:plt.grid(True)

添加注釋:如ax.annotate('x', xy=xpoint, textcoords='offsetpoints',xytext=(-50, 30), arrowprops=dict(arrowstyle="->"))

增加圖例:如plt.legend(loc='best', fancybox=True)

對坐标取對數:橫坐标plt.semilogx(),縱坐标plt.semilogy(),橫縱同時plt.loglog()