用NumPy獲取數組的值、分片以及改變數組的維度
1. 獲取數組值和數組的分片
NumPy數組也指出與Python列表相同的操作,例如,通過索引獲得數組值,分片等。
下面的例子演示了如何通過索引獲得NumPy數組的值,以及對NumPy數組使用分片操作。
- from numpy import *
- # 定義一個二維的NumPy數組
- a = array([[1,2,3],[4,5,6],[7,8,9]])
- # 輸出數組a的第1行第1列的值,運行結果:1
- print(a[0,0])
- # 運行結果:a[0,1] = 2, a[2,1] = 8
- print("a[0,1] = {}, a[2,1] = {}".format(a[0,1],a[2,1]))
- # 分片操作,將3*3的二維數組變成1*3的二維數組,運行結果:[[1 2 3]]
- print(a[0:1])
- # 分片操作,獲取1*3的二維數組的第1行的值,運行結果:[1 2 3]
- print(a[0:1][0])
- # 分片操作,將3*3二維數組變成2*3的二維數組
- print(a[0:2])
- b = a[0:]
- # 分片操作,b與a的值是相同的
- print(a)
- # 分片操作,步長是2
- print(a[0::2])
- # 與a[0:2]的結果相同
- print(a[-3:-1])
程序運行結果如圖1所示。
圖1 數組的索引和分片操作
2. 改變數組的維度
處理數組的一項重要工作就是改變數組的維度,包括提高數組的維度和降低數組的維度,還包括數組的轉置。NumPy提供大量的API可以很輕松地完成這些數組的操作。例如,通過reshape方法可以將一維數組變成二維、三維或者多為數組。通過ravel方法或flatten方法可以將多維數組變成一維數組。改變數組的維度還可以直接設置NumPy數組的shape屬性(元組類型),通過resize方法也可以改變數組的維度。通過transpose方法可以對數組進行轉置。本節將介紹NumPy中與數組維度相關的常用API的使用方法。
下面的例子演示了如何利用NumPy中的API對數組進行維度操作。
- from numpy import *
- b = arange(24).reshape(2,3,4)
- # 將一維數組變成三維數組
- print(b)
- print('------------------')
- # 將三維數組變成一維數組
- b1 = b.ravel()
- print(b1)
- print('------------------')
- # 將三維數組變成一維數組
- b2 = b.flatten()
- print(b2)
- print('------------------')
- # 將三維數組變成二維數組(6行4列)
- b.shape = (6,4)
- print(b)
- print('------------------')
- # 數組轉置
- b3 = b.transpose()
- print(b3)
- print('------------------')
- # 將三維數組變成二維數組(2行12列)
- b.resize((2,12))
- print(b)
程序運行結果如圖2所示。
圖2 改變數組的維度
本文轉載自微信公眾號「極客起源」,可以通過以下二維碼關注。轉載本文請聯系極客起源公眾號。