引言
在Python中,NumPy庫是停止科學打算跟數據處理的富強東西。NumPy供給了多維數組東西,以及一系列用於操縱這些數組的函數。多維數組的維度變更是數據處理中罕見的須要,比方數據重塑、轉置、合併、分割等。本文將深刻探究NumPy中數組維度變更的技能,幫助讀者輕鬆實現多維數組的轉換與操縱。
NumPy庫介紹及其重要性
NumPy是Python編程言語的一個庫,支撐大年夜型多維數組跟矩陣運算,其余也供給了大年夜量的數學函數庫。NumPy的核心是ndarray東西,它是一種疾速、節儉空間的多維數組。因為NumPy的富強功能跟高效性,它在數據科學、呆板進修跟科學打算範疇掉掉落了廣泛利用。
為什麼抉擇NumPy
- 高效的數組操縱:NumPy的數組操縱比Python的列表操縱更快。
- 豐富的函數庫:NumPy供給了大年夜量的數學函數,可能便利地停止矩陣運算、隨機數生成等。
- 與其他庫的兼容性:NumPy與其他科學打算庫(如SciPy、Pandas)高度兼容。
安裝NumPy
在利用NumPy之前,須要進步行安裝。可能利用以下命令停止安裝:
pip install numpy
維度變更的基本方法
維度變更是指在多維數組中交換差別軸的地位。這對數據預處理、特徵工程以及模型輸入輸出的調劑非常重要。
利用reshape函數
reshape
函數容許我們將數組重新塑形成差其余外形,而不改變其數據。它的基本語法是:
numpy.reshape(a, newshape, order='C')
其中,newshape
是目標外形,order
參數定義了內存中數組元素的次序。
示例代碼:
import numpy as np
a = np.arange(15).reshape(3, 5)
print(a)
輸出:
[[ 0 1 2 3 4]
[ 5 6 7 8 9]
[10 11 12 13 14]]
利用flatten跟ravel函數
flatten
跟ravel
函數用於將多維數組壓平為一維數組。固然功能類似,但它們之間存在一些差別。
flatten
函數老是前去數組的正本,而ravel
函數儘可能前去數組的視圖。
示例代碼:
a = np.array([[1, 2, 3], [4, 5, 6]])
b = a.flatten()
c = a.ravel()
print(b)
print(c)
a[0, 0] = 10
print(b)
print(c)
輸出:
[1 2 3 4 5 6]
[1 2 3 4 5 6]
[1 10 2 3 4 5 6]
[1 10 2 3 4 5 6]
利用transpose函數
transpose
函數用於對調多維數組的維度,比方二維數組利用此方法可能實現矩陣轉置。
示例代碼:
a = np.array([[1, 2], [3, 4]])
b = a.transpose()
print(b)
輸出:
[[1 3]
[2 4]]
利用swapaxes函數
swapaxes
函數用於交換數組的兩個軸。
示例代碼:
a = np.array([[1, 2], [3, 4]])
b = a.swapaxes(0, 1)
print(b)
輸出:
[[1 3]
[2 4]]
高等數組變更技能
播送機制(Broadcasting)
播送機制使維度差其余數組可能操縱,這是NumPy中比較重要的特點。
- 當兩個數組的維數不相稱時,但它們的後緣維度的軸長符合。
- 其余一種是有一方的長度為1。
示例代碼:
import numpy as np
arr1 = np.array([[0, 0, 0], [1, 1, 1], [2, 2, 2], [3, 3, 3]])
arr2 = np.array([1, 2, 3])
result = arr1 * arr2
print(result)
輸出:
[[ 0 0 0]
[ 1 2 3]
[ 2 4 6]
[ 3 6 9]]
利用expanddims()跟squeeze()函數
expanddims()
函數用於增加數組的維度。squeeze()
函數用於移除數組的單維度。
示例代碼:
import numpy as np
a = np.array([1, 2, 3])
b = np.expand_dims(a, axis=0)
c = np.squeeze(b)
print(a)
print(b)
print(c)
輸出:
[1 2 3]
[[1 2 3]]
[1 2 3]
總結
NumPy供給了豐富的數組維度變更技能,可能幫助我們輕鬆實現多維數組的轉換與操縱。經由過程純熟控制這些技能,可能愈加高效地停止數據處理跟分析。