您好,登錄后才能下訂單哦!
這篇文章主要介紹了Numpy數組與列表怎么使用的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇Numpy數組與列表怎么使用文章都會有所收獲,下面我們一起來看看吧。
今天為大家介紹以下內容:
Ⅰ ndarray數組與列表的相互轉化;
Ⅱ ndarray數組的數據類型轉化;
Ⅲ 改變ndarray數組的形狀;
說白了,就是講述3個函數。當然,這只是numpy函數中的冰山一角。這里只是介紹在學習numpy過程中,最先遇到的幾個函數。
當你學習numpy的時候,我就默認你肯定已經學過Python基礎了。對于list列表這個基本數據類型,你肯定不會感到陌生。
那么我們如何實現 “列表” 與 “數組” 之間的相互轉化呢?
① 列表轉數組:直接將一個列表傳入array()函數中
listlist1 = list(range(10)) print(list1) array1 = np.array(list1) print(array1)
結果如下:
② 數組轉列表:調用數組的tolist()方法
array2 = np.arange(10) print(array2) list2 = array2.tolist() print(list2)
結果如下:
記住一句話:numpy中的數據類型轉換,不要使用x.dtype修改元素的數據類型,最好用x.astype()這種方式。
① numpy中常用的的數據類型
這里只說明一下numpy中常用的數據類型,int類型和float類型,但是一般都不是直接寫int和float的,而是像int32、float64這樣的寫法,因此我們就簡單說一下這個32或64的含義。
在計算機中,最底層執行的是0和1組成的二進制指令,一個0或者1就代表著一個二進制位,又叫"比特位(bit)",這里的32或64就是代表二進制位。
根據計算機的換算單位,1字節=8二進制位,即"1bytes=8bit",因此,根據這種換算:"32bit-4bytes"、"64bit=8bytes"。
由上述分析,我們現在對int32做一個總結,int32說明了該數組中每個元素的數據類型是int32,同時通過32我們又可以知道,該數組中每一個元素的存儲空間是4字節,那么這個范圍大致是[-2147483648,2147483647]。
② 使用dtype原地修改數組的數據類型,會出現什么問題?
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)
結果如下:
為什么會出現上述現象?
通過上面的測試發現,當我們使用"dtype"修改數組的數據類型的時候,比特位(也就是一個"二進制位”)每壓縮為原來的二分之一,數組中的元素個數就會變為原來的兩倍。
這是為什么呢?
數組一旦創建,它的數據類型也就定了,也就相當于開辟了一塊內存,用于存儲這個數組了,下面用一個公式形象說明上述現象的原因。
假設某個數組有x個元素,采用的數據類型是int64,這個數據類型占用的內存大小為8字節,因而整個數組占用的內存大小為8*x。
當數據類型變為int32的時候,數組中數據類型就變成了4字節,通過上面的計10算我們已經知道這個數組開辟的內存為8x,因此元素個數就變成了8x/4-2*x,11 就是說,數組元素變為了原來的2倍。
③ 使用astype()函數修改數組的數據類型:相當于新創建了一個數組
z = np.array([1.5,3.7,4.8]) print(z) print(z.dtype) zzz = z.astype(np.float32) print(zz) print(zz.dtype)
結果如下:
① 使用numpy中的reshape()函數修改數組對象
xx = np.arange(10).reshape(2,5) xxx = np.reshape(xx,(5,2)) print(xxx)
結果如下:
② 使用數組對象的reshape()方法修改數組對象
yy = np.arange(10).reshape(2,5) print(yy)
結果如下:
③ 改變數組形狀時,如果維度大于1,可以將“最后一個維度”設置為-1
p = np.arange(6).reshape(2,3) print(p) q = np.arange(6).reshape(2,-1) print(q)
結果如下:
注意:可以這樣做的原因在于,當你指明了前面的維度,最后一個維度會根據數組元素個數和前面的維度數,自動計算出最后一個維度的維度數,也就是說【維度一 * 維度二 * … * 維度N = 元素個數】。
關于“Numpy數組與列表怎么使用”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“Numpy數組與列表怎么使用”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。