1. 程式人生 > >教程|Python之Numpy ndarray 基本介紹 4

教程|Python之Numpy ndarray 基本介紹 4

教程|Python之Numpy ndarray 基本介紹 4

 

教程|Python之Numpy ndarray 基本介紹 4

 

訪問flyai.club,一鍵建立你的人工智慧專案

教程|Python之Numpy ndarray 基本介紹 4

 

教程|Python之Numpy ndarray 基本介紹 3

知識點10. 布林型索引

來看這樣一個例子,假設我們有一個用於儲存資料的陣列以及一個儲存姓名的陣列(含有重複項)。在這裡,我將使用numpy.random中的randn函式生成一些正態分佈的隨機資料:

教程|Python之Numpy ndarray 基本介紹 4

 

假設每個名字都對應data陣列中的一行,而我們想要選出對應於名字"Bob"的所有行。跟算術運算一樣,陣列的比較運算(如==)也是向量化的。因此,對names和字串"Bob"的比較運算將會產生一個布林型陣列:

教程|Python之Numpy ndarray 基本介紹 4

 

這個布林型陣列可用於陣列索引:

教程|Python之Numpy ndarray 基本介紹 4

 

注意:如果布林型陣列的長度不對,布林型選擇就會出錯,因此一定要小心。

布林型陣列的長度必須跟被索引的軸長度一致。此外,還可以將布林型陣列跟切片、整數混合使用:

下面的例子,我選取了names == 'Bob'的行,並索引了列:

教程|Python之Numpy ndarray 基本介紹 4

 

要選擇除"Bob"以外的其他值,既可以使用不等於符號(!=),也可以通過~對條件進行否定:

教程|Python之Numpy ndarray 基本介紹 4

 

~操作符用來反轉條件很好用:

教程|Python之Numpy ndarray 基本介紹 4

 

選取這三個名字中的兩個需要組合應用多個布林條件,使用&(和)、|(或)之類的布林算術運算子即可:

教程|Python之Numpy ndarray 基本介紹 4

 

通過布林型索引選取陣列中的資料,將總是建立資料的副本,即使返回一模一樣的陣列也是如此。

注意:Python關鍵字and和or在布林型陣列中無效。要使用&與|。

通過布林型陣列設定值是一種經常用到的手段。為了將data中的所有負值都設定為0,我們只需:

教程|Python之Numpy ndarray 基本介紹 4

 

通過一維布林陣列設定整行或列的值也很簡單:

教程|Python之Numpy ndarray 基本介紹 4

 

知識點11. 花式索引

花式索引(Fancy indexing)是一個NumPy術語,它指的是利用整數陣列進行索引。假設我們有一個8×4陣列:

教程|Python之Numpy ndarray 基本介紹 4

 

為了以特定順序選取行子集,只需傳入一個用於指定順序的整數列表或ndarray即可:

教程|Python之Numpy ndarray 基本介紹 4

 

這段程式碼確實達到我們的要求了!使用負數索引將會從末尾開始選取行

教程|Python之Numpy ndarray 基本介紹 4

 

一次傳入多個索引陣列會有一點特別。它返回的是一個一維陣列,其中的元素對應各個索引元組:

教程|Python之Numpy ndarray 基本介紹 4

 

這個花式索引的行為可能會跟某些使用者的預期不一樣(包括我在內),選取矩陣的行列子集應該是矩形區域的形式才對。下面是得到該結果的一個辦法:

教程|Python之Numpy ndarray 基本介紹 4

 

記住,花式索引跟切片不一樣,它總是將資料複製到新陣列中。

知識點12. 陣列轉制和軸對換

轉置是重塑的一種特殊形式,它返回的是源資料的檢視(不會進行任何複製操作)。陣列不僅有transpose方法,還有一個特殊的T屬性:

教程|Python之Numpy ndarray 基本介紹 4

 

在進行矩陣計算時,經常需要用到該操作,比如利用np.dot計算矩陣內積:

教程|Python之Numpy ndarray 基本介紹 4

 

對於高維陣列,transpose需要得到一個由軸編號組成的元組才能對這些軸進行轉置(比較費腦子):

教程|Python之Numpy ndarray 基本介紹 4

 

簡單的轉置可以使用.T,它其實就是進行軸對換而已。ndarray還有一個swapaxes方法,它需要接受一對軸編號:

教程|Python之Numpy ndarray 基本介紹 4

 

swapaxes也是返回源資料的檢視(不會進行任何複製操作)

教程|Python之Numpy ndarray 基本介紹 4

 

教程|Jupyter Notebook初級教程——迷死人的基礎操作

教程|Jupyter Notebook基礎教程——快捷鍵的使用

教程|Python之Numpy ndarray 基本介紹 1

教程|Python之Numpy ndarray 基本介紹 2

教程|Python之Numpy ndarray 基本介紹 3

點選 瞭解更多 ,動手操作

— End —

教程|Python之Numpy ndarray 基本介紹 4