1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        NumPy庫入門教程:基礎(chǔ)知識總結(jié)

        共 3686字,需瀏覽 8分鐘

         ·

        2021-12-10 06:19

        點擊上方小白學(xué)視覺”,選擇加"星標(biāo)"或“置頂

        重磅干貨,第一時間送達



        numpy可以說是Python運用于人工智能和科學(xué)計算的一個重要基礎(chǔ),近段時間恰好學(xué)習(xí)了numpy,pandas,sklearn等一些Python機器學(xué)習(xí)和科學(xué)計算庫,因此在此總結(jié)一下常用的用法。


        1?numpy數(shù)組的創(chuàng)建


        通過array方式創(chuàng)建,向array中傳入一個list實現(xiàn)


        一維數(shù)組的創(chuàng)建:



        二維數(shù)組的創(chuàng)建:傳入一個嵌套的list即可,如下例:



        通過arange創(chuàng)建數(shù)組:下例中創(chuàng)建一個0~1間隔為0.1的行向量,從0開始,不包括1,第二個例子通過對齊廣播方式生成一個多維的數(shù)組。




        通過linspace函數(shù)創(chuàng)建數(shù)組:下例中創(chuàng)建一個0~1間隔為1/9的行向量(按等差數(shù)列形式生成),從0開始,包括1.



        通過logspace函數(shù)創(chuàng)建數(shù)組:下例中創(chuàng)建一個1~100,有20個元素的行向量(按等比數(shù)列形式生成),其中0表示10^0=1,2表示10^2=100,從1開始,包括100



        生成特殊形式數(shù)組:


        生成全0數(shù)組(zeros()函數(shù)),生成全1數(shù)組(ones()函數(shù)), 僅分配內(nèi)存但不初始化的數(shù)組(empty()函數(shù))。


        注意要指定數(shù)組的規(guī)模(用一個元組指定),同時要指定元素的類型,否則會報錯



        生成隨機數(shù)組



        通過frombuffer,fromstring,fromfile和fromfunction等函數(shù)從字節(jié)序列、文件等創(chuàng)建數(shù)組,下例中生成一個9*9乘法表



        2?顯示、創(chuàng)建、改變數(shù)組元素的屬性、數(shù)組的尺寸等




        3?改變數(shù)組的尺寸


        reshape方法,第一個例子是將43矩陣轉(zhuǎn)為34矩陣,第二個例子是將行向量轉(zhuǎn)為列向量。注意在numpy中,當(dāng)某個軸的指定為-1時,此時numpy會根據(jù)實際的數(shù)組元素個數(shù)自動替換-1為具體的大小,如第二例,我們指明了c僅有一列,而b數(shù)組有12個元素,因此c被自動指定為12行1列的矩陣,即一個12維的列向量。




        4?元素索引和修改


        簡單的索引形式和切片:




        當(dāng)使用布爾數(shù)組b作為下標(biāo)存取數(shù)組x中的元素時,將收集數(shù)組x中所有在數(shù)組b中對應(yīng)下標(biāo)為True的元素。使用布爾數(shù)組作為下標(biāo)獲得的數(shù)組不和原始數(shù)組共享數(shù)據(jù)空間,注意這種方式只對應(yīng)于布爾數(shù)組(array),不能使用布爾列表(list)。(附注:當(dāng)布爾數(shù)組的長度與被索引的數(shù)組的長度短時,不足的部分都當(dāng)作False)



        利用條件進行索引:利用不等式等進行索引



        多維數(shù)組的索引和切片(右邊框圖中的顏色和左邊的指令的顏色相對應(yīng)):



        同樣的,可以采用bool型的方式對數(shù)組進行索引和切片操作



        其實多維數(shù)組的索引還是很好理解的,例如下例中,我們可以看到對于一個張量,也就是b,對其索引是,[i,j,k]中的i表示選擇第幾個二維數(shù)組,然后j表示取二維數(shù)組中的第幾個行向量,k表示取行向量中的第幾個元素。



        5?ufunc操作


        ufunc是universal function的縮寫,它是一種能對數(shù)組的每個元素進行操作的函數(shù)。numPy內(nèi)置的許多ufunc函數(shù)都是在C語言級別實現(xiàn)的,因此它們的計算速度非???。下面給一個計算sin函數(shù)(sin函數(shù)計算數(shù)組中全部元素的sin值)的小實例:



        四則運算符可以直接用于數(shù)組(一維或多維)計算:




        比較操作也可直接進行,如下,比較x1和x2各對應(yīng)元素的大小,返回的是一個bool型數(shù)組。


        可用的操作符有 ‘==’,‘!

        =’,‘<’,‘>’,‘<=’,‘>=’等。另外可以使用數(shù)組的any()或all()方法。只要數(shù)組中有一個值為True,則any()返回True;而只有數(shù)組的全部元素都為True,all()才返回True。




        想要了解更多的numpy自帶的ufunc函數(shù),可以查看這篇博客:


        自定義ufunc函數(shù):frompyfunc(func,nin,nout) 函數(shù)可以將計算單個值的函數(shù)轉(zhuǎn)換成一個可對數(shù)組中每個元素進行計算的ufunc函數(shù)。其中nin是輸入func的參數(shù)的個數(shù),nout是func返回值的個數(shù)。如下例。



        reduce方法(與Python的reduce函數(shù)類似,其沿著axis軸對array進行操作)




        accumulate方法(其作用和reduce方法類似,但是會保存中間結(jié)果)



        outer方法(對其兩個參數(shù)數(shù)組的每兩對元素的組合進行運算,計算外積):若數(shù)組a的維數(shù)為M,數(shù)組b的維數(shù)為N,則ufunc函數(shù)op的outer()方法對a、b數(shù)組計算所生成的數(shù)組c的維數(shù)為M+N,c的形狀是a、b的形狀的結(jié)合。例如a的形狀為(2,3),b的形狀為(4,5),則c的形狀為(2,3,4,5)。


        6?廣播操作


        廣播是針對形狀不同的數(shù)組的運算采取的操作。當(dāng)我們使用ufunc函數(shù)對兩個數(shù)組進行計算時,ufunc函數(shù)會對這兩個數(shù)組的對應(yīng)元素進行計算,因此它要求這兩個數(shù)組有相同的大小(shape相同)。如果兩個數(shù)組的shape不同的話(行列規(guī)模不等),會進行如下的廣播(broadcasting)處理:


        1)讓所有輸入數(shù)組都向其中shape最長的數(shù)組看齊,shape中不足的部分都通過在前面加1補齊。因此輸出數(shù)組的shape是輸入數(shù)組shape的各個軸上的最大值(往最大軸長上靠)。


        2)如果輸入數(shù)組的某個軸和輸出數(shù)組的對應(yīng)軸的長度相同或者其長度為1時,這個數(shù)組能夠用來計算,否則出錯。


        3)當(dāng)輸入數(shù)組的某個軸的長度為1時,沿著此軸運算時都用此軸上的第一組值。



        感覺說的不太明白,于是還是用實例說話好了。


        7 矩陣運算

        矩陣乘法(dot乘法,注意要符合矩陣乘法規(guī)則



        內(nèi)積(inner,計算向量/矩陣內(nèi)積):和dot乘積一樣,對于兩個一維數(shù)組,計算的是這兩個數(shù)組對應(yīng)下標(biāo)元素的乘積和;對于多維數(shù)組a和b,它計算的結(jié)果數(shù)組中的每個元素都是數(shù)組a和b的最后一維的內(nèi)積,因此數(shù)組a和b的最后一維的長度必須相同。


        計算公式為:

        inner(a, b)[i,j,k,m] = sum(a[i,j,:]*b[k,m,:])




        外積(outer,計算外積):只按照一維數(shù)組進行計算,如果傳入?yún)?shù)是多維數(shù)組,則先將此數(shù)組展平為一維數(shù)組之后再進行運算。outer乘積計算的列向量和行向量的矩陣乘積。



        解線性方程組(solve):solve(a,b)有兩個參數(shù)a和b。a是一個N*N的二維數(shù)組,而b是一個長度為N的一維數(shù)組,solve函數(shù)找到一個長度為N的一維數(shù)組x,使得a和x的矩陣乘積正好等于b,數(shù)組x就是多元一次方程組的解。



        8 文件存取

        a.tofile(file_name)?,保存a到file_name文件中,file_name為字符串類型,如‘a(chǎn).txt’等;從文件中讀回a數(shù)組時需要指明類型,如:b=np.fromfile(file_name,dtype=np.float)


        時會報錯,正確的使用方式是:

        b=np.fromfile(file_name,dtype=np.int32)


        save和load方法(寫入文件和從文件讀回都不需要指明類型,存儲文件類型為npy格式文件):


        np.save(“a.npy”,?a)????#?將array?a存入a.npy文件中c = np.load( “a.npy” ) # 從a.npy文件中讀回array a


        savetxt和loadtxt方法(保存為txt格式文件):


        np.savetxt(“a.txt”, a)  # 將array a存入a.txt文件中np.loadtxt(“a.txt”)     # 從a.txt文件中讀回array a


        -?END -

        下載1:OpenCV-Contrib擴展模塊中文版教程
        在「小白學(xué)視覺」公眾號后臺回復(fù):擴展模塊中文教程,即可下載全網(wǎng)第一份OpenCV擴展模塊教程中文版,涵蓋擴展模塊安裝、SFM算法、立體視覺、目標(biāo)跟蹤、生物視覺、超分辨率處理等二十多章內(nèi)容。

        下載2:Python視覺實戰(zhàn)項目52講
        小白學(xué)視覺公眾號后臺回復(fù):Python視覺實戰(zhàn)項目,即可下載包括圖像分割、口罩檢測、車道線檢測、車輛計數(shù)、添加眼線、車牌識別、字符識別、情緒檢測、文本內(nèi)容提取、面部識別等31個視覺實戰(zhàn)項目,助力快速學(xué)校計算機視覺。

        下載3:OpenCV實戰(zhàn)項目20講
        小白學(xué)視覺公眾號后臺回復(fù):OpenCV實戰(zhàn)項目20講,即可下載含有20個基于OpenCV實現(xiàn)20個實戰(zhàn)項目,實現(xiàn)OpenCV學(xué)習(xí)進階。

        交流群


        歡迎加入公眾號讀者群一起和同行交流,目前有SLAM、三維視覺、傳感器自動駕駛、計算攝影、檢測、分割、識別、醫(yī)學(xué)影像、GAN、算法競賽等微信群(以后會逐漸細(xì)分),請掃描下面微信號加群,備注:”昵稱+學(xué)校/公司+研究方向“,例如:”張三?+?上海交大?+?視覺SLAM“。請按照格式備注,否則不予通過。添加成功后會根據(jù)研究方向邀請進入相關(guān)微信群。請勿在群內(nèi)發(fā)送廣告,否則會請出群,謝謝理解~


        瀏覽 45
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            国产三级三级在线观看 | 爱爱爱视频免费看 | 国产精品国产三级国产专播品爱网 | 另类小说亚洲区欧美动图无码第页 | 中文字幕无码在线观看 | a免费观看 | 操逼网站在线观看 | 成年人免费看 | A级视频 中文字幕第二页在线观看 在线欧美成人电影 | 4库成人无码A片观看视频 |