91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

Numpy數組與列表的用法

發布時間:2021-06-26 10:00:37 來源:億速云 閱讀:495 作者:chen 欄目:編程語言

本篇內容主要講解“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數組與列表的用法”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

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

AI

如东县| 巴南区| 武胜县| 洛阳市| 廉江市| 墨江| 庆城县| 博客| 尼勒克县| 牡丹江市| 宝清县| 堆龙德庆县| 密云县| 花莲市| 西畴县| 牡丹江市| 乡城县| 昌黎县| 泰和县| 托克逊县| 津南区| 曲周县| 克什克腾旗| 临沭县| 丹阳市| 宁安市| 阿拉善右旗| 昌乐县| 永兴县| 德州市| 内乡县| 镇江市| 民勤县| 卢氏县| 赤城县| 察隅县| 梁山县| 互助| 方城县| 漾濞| 林西县|