numpy方法類推tensorflow
阿新 • • 發佈:2018-11-27
一、陣列方法
建立陣列:arange()建立一維陣列;array()建立一維或多維陣列,其引數是類似於陣列的物件,如列表等 反過來轉換則可以使用numpy.ndarray.tolist()函式,如a.tolist() 建立陣列:np.zeros((2,3)),或者np.ones((2,3)),引數是一個元組分別表示行數和列數 對應元素相乘,a * b,得到一個新的矩陣,形狀要一致;但是允許a是向量而b是矩陣,a的列數必須等於b的列數,a與每個行向量對應元素相乘得到行向量。 + - / 與 * 的運算規則相同。 數學上定義的矩陣乘法 np.dot(a, b)。如果形狀不匹配會報錯;但是允許允許a和b都是向量,返回兩個向量的內積。只要有一個引數不是向量,就應用矩陣乘法。 (PS:總之就是,向量很特殊,在運算中可以自由轉置而不會出錯,運算的返回值如果維度為1,也一律用行向量[]表示) 讀取陣列元素:如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) 計算最大值:amax(a, axis=None, out=None, keepdims=False) 。Return the maximum of an array or maximum along an axis. 計算加權平均值: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) 修剪陣列,將陣列中小於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 不能求逆、求協方差、跡等,不適用於複雜科學計算,可以將array轉換成matrix。
三、矩陣方法
建立矩陣:np.mat(‘…’)通過字串格式建立,np.mat(a)通過array陣列建立,也可用matrix或bmat函式建立 matrix不會自動轉換行列向量。matrix的所有運算預設都是數學上定義的矩陣運算,除非用mutiply函式實現點乘。 建立複合矩陣: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()
四、線性代數
估計線性模型中的係數: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)
六、多項式
多項式擬合: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) 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()