一、介紹
當涉及到需要處理多維數據時,三維數組是非常常見的數據結構。比如在計算機圖形學、機器學習等領域使用三維數組儲存三維立體圖像或者三維數據集。
在Python中,我們可以通過嵌套列表或者NumPy庫來實現三維數組操作。
二、嵌套列表實現
使用嵌套列表可以方便地創建三維數組。
# 創建3個長度為4的二維數組
arr = [[[0]*4]*4 for _ in range(3)]
# 輸出數組
for i in range(len(arr)):
for j in range(len(arr[i])):
print(arr[i][j])
print('---')
上述代碼中,我們通過三層循環來初始化一個長寬高分別為4、4、3的三維數組,並將每個元素初始化為0。我們通過兩層循環遍歷輸出所有元素,每個二維數組之間以「—」分隔。
三、NumPy庫實現
NumPy是Python中用於科學計算的重要庫,提供了高效的多維數組操作。使用NumPy可以很方便的實現多維數組。
創建一個三維數組,可以使用NumPy數組對象的reshape()方法和arange()函數,代碼如下:
import numpy as np
# 創建3*4*2的三維數組
arr = np.arange(24).reshape(3, 4, 2)
print(arr)
reshape()方法用於改變數組的形狀,arange()函數用於返回包含給定範圍內的元素的NumPy數組。
上述代碼中,我們通過arange()函數返回一個包含0到23的整數的一維數組,再使用reshape()方法將其轉換為3*4*2的三維數組。最後輸出數組。
四、三維數組的操作
三維數組和二維數組類似,支持索引、切片、布爾索引、花式索引等操作。同時,三維數組還支持沿著不同軸的聚合操作(如求和、求平均值、最小值、最大值等)。
下面展示一些常見的三維數組操作:
1. 索引操作
# 創建一個3*4*2的三維數組
arr = np.arange(24).reshape(3, 4, 2)
# 獲取索引為(2, 3, 1)的元素
print(arr[2][3][1])
# 獲取第1個二維數組的第3行第2列的元素
print(arr[0, 2, 1])
2. 切片操作
# 創建一個3*4*2的三維數組
arr = np.arange(24).reshape(3, 4, 2)
# 獲取第2個二維數組的第1到第3行的所有元素
print(arr[1, 0:3, :])
# 獲取所有二維數組的第2列的所有元素
print(arr[:, 1, :])
# 獲取所有二維數組的第1行第2列的元素
print(arr[:, 0:1, 1:2])
3. 布爾索引
# 創建一個3*4*2的三維數組
arr = np.arange(24).reshape(3, 4, 2)
# 獲取大於10的元素
print(arr[arr > 10])
4. 花式索引
# 創建一個3*4*2的三維數組
arr = np.arange(24).reshape(3, 4, 2)
# 獲取第1個二維數組中的(0,0)、(1,1)、(2,0)元素
print(arr[0, [0, 1, 2], [0, 1, 0]])
# 獲取第1個二維數組中的(0,1)、(2,1)、(1,0)元素
print(arr[0, [0, 2, 1], [1, 1, 0]])
5. 操作
三維數組支持沿著不同軸的聚合操作,使用NumPy庫中的函數實現。比如我們可以使用sum()函數對第3個軸方向求和,代碼如下:
# 創建一個3*4*2的三維數組
arr = np.arange(24).reshape(3, 4, 2)
# 沿著第3個軸方向求和
print(np.sum(arr, axis=2))
上述代碼中,我們使用sum()函數對三維數組沿著第3個軸方向求和,並輸出結果。
五、總結
本文介紹了兩種實現三維數組操作的方法,分別是嵌套列表和NumPy庫。同時,我們還介紹了三維數組的常見操作:索引、切片、布爾索引、花式索引、聚合操作等。
在處理多維數據時,三維數組是非常常見的數據結構,希望本文能夠為讀者提供一些幫助和參考。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/237016.html