中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Numpy數組與列表怎么使用

發布時間:2022-03-30 16:53:14 來源:億速云 閱讀:274 作者:iii 欄目:開發技術

這篇文章主要介紹了Numpy數組與列表怎么使用的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇Numpy數組與列表怎么使用文章都會有所收獲,下面我們一起來看看吧。

 1. 本文介紹

今天為大家介紹以下內容:

  •  Ⅰ ndarray數組與列表的相互轉化;

  •  Ⅱ ndarray數組的數據類型轉化;

  •  Ⅲ 改變ndarray數組的形狀;

說白了,就是講述3個函數。當然,這只是numpy函數中的冰山一角。這里只是介紹在學習numpy過程中,最先遇到的幾個函數。

2. ndarray數組與列表的相互轉化

當你學習numpy的時候,我就默認你肯定已經學過Python基礎了。對于list列表這個基本數據類型,你肯定不會感到陌生。

那么我們如何實現 “列表” 與 “數組” 之間的相互轉化呢?

① 列表轉數組:直接將一個列表傳入array()函數中

listlist1 = list(range(10))  print(list1)  array1 = np.array(list1)  print(array1)

結果如下:

Numpy數組與列表怎么使用

② 數組轉列表:調用數組的tolist()方法

array2 = np.arange(10)  print(array2)  list2 = array2.tolist()  print(list2)

結果如下:

Numpy數組與列表怎么使用

3. ndarray數組的數據類型轉化

記住一句話: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)

結果如下:

Numpy數組與列表怎么使用

為什么會出現上述現象?

通過上面的測試發現,當我們使用"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數組與列表怎么使用

4. 改變ndarray數組的形狀

① 使用numpy中的reshape()函數修改數組對象

xx = np.arange(10).reshape(2,5)  xxx = np.reshape(xx,(5,2))  print(xxx)

結果如下:

Numpy數組與列表怎么使用

② 使用數組對象的reshape()方法修改數組對象

yy = np.arange(10).reshape(2,5)  print(yy)

結果如下:

Numpy數組與列表怎么使用

③ 改變數組形狀時,如果維度大于1,可以將“最后一個維度”設置為-1

p = np.arange(6).reshape(2,3)  print(p)  q = np.arange(6).reshape(2,-1)  print(q)

結果如下:

Numpy數組與列表怎么使用

注意:可以這樣做的原因在于,當你指明了前面的維度,最后一個維度會根據數組元素個數和前面的維度數,自動計算出最后一個維度的維度數,也就是說【維度一 * 維度二 * … * 維度N = 元素個數】。

關于“Numpy數組與列表怎么使用”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“Numpy數組與列表怎么使用”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

绥阳县| 六枝特区| 乌鲁木齐县| 会昌县| 车致| 宾阳县| 梁山县| 兰州市| 伊宁县| 漠河县| 宜阳县| 九寨沟县| 广宗县| 汶上县| 沙坪坝区| 黄大仙区| 曲麻莱县| 阳泉市| 霍林郭勒市| 潼南县| 宁都县| 太和县| 曲沃县| 东阳市| 康保县| 镇巴县| 隆安县| 乌拉特后旗| 榆树市| 名山县| 义乌市| 伊金霍洛旗| 桐梓县| 芜湖县| 元阳县| 三门峡市| 长治县| 凤台县| 河池市| 南开区| 临沭县|