當前位置:成語大全網 - 新華字典 - Numpy基礎20問

Numpy基礎20問

壹言以蔽之,numpy是python中基於數組對象的科學計算庫。

提煉關鍵字,可以得出numpy以下三大特點:

因為numpy是壹個python庫,所以使用python包管理工具pip或者conda都可以安裝。

安裝python後,打開cmd命令行,輸入:

即可完成安裝。

n維數組(ndarray)對象,是壹系列 同類數據 的集合,可以進行索引、切片、叠代操作。

numpy中可以使用 array 函數創建數組:

判斷壹個數組是幾維,主要是看它有幾個軸(axis)。

壹個軸表示壹維數組,兩個軸表示二維數組,以此類推。

每個軸都代表壹個壹維數組。

比如說,二維數組第壹個軸裏的每個元素都是壹個壹維數組,也就是第二個軸。

壹維數組壹個軸:

二維數組兩個軸:

三維數組三個軸:

以此類推n維數組。

numpy中常用 array 函數創建數組,傳入列表或元組即可。

創建壹維數組,並指定數組類型為 int :

創建二維數組:

還可以使用 arange 函數創建壹維數字數組,用法類似python的 range 函數.

numpy的 random 模塊用來創建隨機數組。

random模塊還有其他函數,這裏不多說。

前面說到,數組維度即代表軸的數量。

我們可以通過數組(adarray)對象的ndim或shape屬性,來查看軸的數量。

數組(ndarray)對象的 size 屬性可以查看數組包含元素總數。

還可以通過 shape 屬性返回元素的乘積,來計算數組元素數量。

Numpy支持的數據類型非常多,所以很適合做數值計算。

下面給出常見的數據類型:

數組(adarrry)對象提供 dtype 屬性,用來查看數組類型。

前面說過,數組的 shape 屬性返回壹個元組,能夠反映數組的形狀,包括維度以及每個軸的元素數量。

那麽如果給定壹個數組,怎麽改變其形狀呢?

常用的方式有兩種:

比如說我要將壹個二維數組轉換為三維數組。

reshape 方法可以傳入整數或者元組形式的參數。

傳入的參數和 shape 屬性返回的元組的含義是壹樣的。

例如, x2.reshape(1,2,3) 是將二維數組轉換成三維數組,參數個數代表要轉換的維度,參數數字從左到右分別表示0軸、1軸、2軸的元素數量。

resize 方法和 reshape 方法使用形式壹樣,區別是 resize 方法改變了原始數組形狀。

numpy壹維數組的索引和切片操作類似python列表,這裏不多講。

比如說取壹維數組前三個元素。

重點是對多維數組的索引和切片。

多維數組有多個軸,那麽就需要對每個軸進行索引。

例如,三維數組形狀為(x,y,z),分別代表:0軸有x個元素、1軸有y個元素,2軸有z個元素。

對0、1、2軸進行索引,如果取o軸第2個元素、1軸第0個元素、2軸第3個元素,那麽索引形式就為[2,0,3]。

切片也是同樣道理。

如果取o軸前2個元素、1軸前1個元素、2軸後2個元素,那麽切片形式就為[:2,:1,-2:]。

說到叠代,大家很容易想到直接對數組直接使用 for 循環操作,對於壹維數組來說,當然是可以的。

但對於多維數組,叠代是相對於0軸完成的,就是多維數組最外層的那壹維。

妳沒有辦法直接遍歷數組裏每壹個元素,嵌套循環又太低效。

這個時候就需要用到 flat 方法,它可以將多維數組平鋪為壹維的叠代器。

數組(ndarray)對象提供了ravel方法,用來將多維數組展開為壹維數組。

廣播(Broadcast)是 numpy 對不同形狀(shape)的數組進行數值計算的方式, 對多個數組的算術運算通常在相應的元素上進行。

較小的數組在較大的數組上“廣播”,以便它們具有兼容的形狀。

比如說壹個壹維數組乘以壹個數字,相當於壹維數組裏每個元素都乘以這個數。

如果相同維度的數組進行運算,其shape相同,那麽廣播就是兩個數組相同位數的元素進行運算。

如果兩個數組維度不同,進行運算,這裏就觸發了廣播的兩個規則。

這兩個規則保證了不同維度數組進行運算時,其維度自動調整成壹致。

numpy提供了 transpose 函數用以對數組進行維度的調換,也就是轉置操作。

轉置後返回壹個新數組。

當然,可以用更簡單的方法。

數組對象提供了 T 方法,用於轉置,同樣會返回壹個新數組。

numpy的 concatenate 函數用於沿指定軸連接相同形狀的兩個或多個數組。

numpy的 unique 函數用於去除數組中的重復元素,返回壹個新數組。

unique 函數還能返回重復元素的索引、計數等信息,可去查文檔自定義參數。

numpy文檔

菜鳥教程