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