<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          這3個函數(shù),是你學(xué)習(xí)Numpy的基礎(chǔ)!

          共 2403字,需瀏覽 5分鐘

           ·

          2021-05-11 21:45

          1. 本文介紹

          今天為大家介紹以下內(nèi)容:
          • Ⅰ ndarray數(shù)組與列表的相互轉(zhuǎn)化;
          • Ⅱ ndarray數(shù)組的數(shù)據(jù)類型轉(zhuǎn)化;
          • Ⅲ 改變ndarray數(shù)組的形狀;
          說白了,就是講述3個函數(shù)。當(dāng)然,這只是numpy函數(shù)中的冰山一角。這里只是介紹在學(xué)習(xí)numpy過程中,最先遇到的幾個函數(shù)。

          2. ndarray數(shù)組與列表的相互轉(zhuǎn)化

          當(dāng)你學(xué)習(xí)numpy的時候,我就默認(rèn)你肯定已經(jīng)學(xué)過Python基礎(chǔ)了。對于list列表這個基本數(shù)據(jù)類型,你肯定不會感到陌生。
          那么我們?nèi)绾螌崿F(xiàn) “列表” 與 “數(shù)組” 之間的相互轉(zhuǎn)化呢?
          ① 列表轉(zhuǎn)數(shù)組:直接將一個列表傳入array()函數(shù)中
          list1 = list(range(10))
          print(list1)

          array1 = np.array(list1)
          print(array1)
          結(jié)果如下:
          ② 數(shù)組轉(zhuǎn)列表:調(diào)用數(shù)組的tolist()方法
          array2 = np.arange(10)
          print(array2)

          list2 = array2.tolist()
          print(list2)
          結(jié)果如下:

          3. ndarray數(shù)組的數(shù)據(jù)類型轉(zhuǎn)化

          記住一句話:numpy中的數(shù)據(jù)類型轉(zhuǎn)換,不要使用x.dtype修改元素的數(shù)據(jù)類型,最好用x.astype()這種方式。
          ① numpy中常用的的數(shù)據(jù)類型
          這里只說明一下numpy中常用的數(shù)據(jù)類型,int類型float類型,但是一般都不是直接寫int和float的,而是像int32、float64這樣的寫法,因此我們就簡單說一下這個32或64的含義。
          在計算機中,最底層執(zhí)行的是0和1組成的二進制指令,一個0或者1就代表著一個二進制位,又叫"比特位(bit)",這里的32或64就是代表二進制位。
          根據(jù)計算機的換算單位,1字節(jié)=8二進制位,即"1bytes=8bit",因此,根據(jù)這種換算:"32bit-4bytes"、"64bit=8bytes"。
          由上述分析,我們現(xiàn)在對int32做一個總結(jié),int32說明了該數(shù)組中每個元素的數(shù)據(jù)類型是int32,同時通過32我們又可以知道,該數(shù)組中每一個元素的存儲空間是4字節(jié),那么這個范圍大致是[-2147483648,2147483647]。
          ② 使用dtype原地修改數(shù)組的數(shù)據(jù)類型,會出現(xiàn)什么問題?
          x = np.array([1.2,3.4,5.6],dtype=np.float64)
          print(x)
          print(x.dtype)
          print(x.nbytes)
          # --------------------------------------------
          x.dtype="float32"
          print(x)
          print(x.nbytes)
          # --------------------------------------------
          x.dtype="float16"
          print(x)
          print(x.nbytes)
          結(jié)果如下:
          為什么會出現(xiàn)上述現(xiàn)象?
          通過上面的測試發(fā)現(xiàn),當(dāng)我們使用"dtype"修改數(shù)組的數(shù)據(jù)類型的時候,比特位(也就是一個"二進制位”)每壓縮為原來的二分之一,數(shù)組中的元素個數(shù)就會變?yōu)樵瓉淼膬杀丁?/span>
          這是為什么呢?
          數(shù)組一旦創(chuàng)建,它的數(shù)據(jù)類型也就定了,也就相當(dāng)于開辟了一塊內(nèi)存,用于存儲這個數(shù)組了,下面用一個公式形象說明上述現(xiàn)象的原因。
          假設(shè)某個數(shù)組有x個元素,采用的數(shù)據(jù)類型是int64,這個數(shù)據(jù)類型占用的內(nèi)存大小為8字節(jié),因而整個數(shù)組占用的內(nèi)存大小為8*x。
          當(dāng)數(shù)據(jù)類型變?yōu)閕nt32的時候,數(shù)組中數(shù)據(jù)類型就變成了4字節(jié),通過上面的計10算我們已經(jīng)知道這個數(shù)組開辟的內(nèi)存為8x,因此元素個數(shù)就變成了8x/4-2*x,11 就是說,數(shù)組元素變?yōu)榱嗽瓉淼?倍。
          ③ 使用astype()函數(shù)修改數(shù)組的數(shù)據(jù)類型:相當(dāng)于新創(chuàng)建了一個數(shù)組
          z = np.array([1.5,3.7,4.8])
          print(z)
          print(z.dtype)

          zz = z.astype(np.float32)
          print(zz)
          print(zz.dtype)
          結(jié)果如下:

          4. 改變ndarray數(shù)組的形狀

          ① 使用numpy中的reshape()函數(shù)修改數(shù)組對象
          xx = np.arange(10).reshape(2,5)
          xxx = np.reshape(xx,(5,2))
          print(xxx)
          結(jié)果如下:
          ② 使用數(shù)組對象的reshape()方法修改數(shù)組對象
          yy = np.arange(10).reshape(2,5)
          print(yy)
          結(jié)果如下:
          ③ 改變數(shù)組形狀時,如果維度大于1,可以將“最后一個維度”設(shè)置為-1
          p = np.arange(6).reshape(2,3)
          print(p)

          q = np.arange(6).reshape(2,-1)
          print(q)
          結(jié)果如下:
          注意:可以這樣做的原因在于,當(dāng)你指明了前面的維度,最后一個維度會根據(jù)數(shù)組元素個數(shù)和前面的維度數(shù),自動計算出最后一個維度的維度數(shù),也就是說【維度一 * 維度二 * … * 維度N = 元素個數(shù)】。


          更多閱讀



          用 Python 進行 OCR 圖像識別


          用 XGBoost 進行時間序列預(yù)測


          5 分鐘快速上手 pytest 測試框架

          特別推薦




          點擊下方閱讀原文加入社區(qū)會員

          瀏覽 72
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

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

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产少又黄又爽的A片 | 成人黄网站在线观看 | 麻豆成人免费电影 | 亚洲A电影| 日韩中文无|