Python – NumPy陣列操作
NumPy(Numerical Python)是Python中一個功能強大的科學計算庫。它提供高效能的多維陣列物件以及用於處理這些陣列的工具。NumPy提供靈活的方式來訪問陣列中的元素。您可以使用索引和切片操作來檢索陣列的特定元素或部分。
索引
在NumPy中,索引從0開始,類似於Python列表。您可以透過在方括號內指定其索引來訪問陣列的單個元素。例如,給定一個數組arr,您可以使用arr[i]訪問索引為i的元素。
切片
NumPy陣列也支援切片,它允許您檢索陣列的一部分。切片使用冒號(:)運算子完成。切片的基本語法是start:stop:step,其中start是起始索引,stop是結束索引(不包括),step是索引之間的增量。
NumPy陣列切片操作示例:
arr[2:6] 檢索索引2到5的元素(不包括6)。
arr[3:] 檢索從索引3到陣列末尾的元素。
arr[::2] 以2為步長檢索元素(跳過每個其他元素)。
arr[::-1] 反向檢索元素。
布林索引
NumPy允許您使用布林陣列作為掩碼,根據某些條件訪問元素。例如,您可以建立一個布林陣列,指示陣列中哪些元素滿足特定條件,然後使用該陣列作為掩碼來檢索相應的元素。
示例
這是一個布林索引的示例:
import numpy as np arr = np.array([1, 2, 3, 4, 5]) mask = arr > 2 print(arr[mask])
輸出
[3, 4, 5]
整數陣列索引
NumPy允許您使用整數陣列作為索引來訪問特定元素。此技術稱為整數陣列索引。透過傳遞索引陣列,您可以檢索與這些索引對應的元素。
示例
這是一個整數陣列索引的示例:
import numpy as np arr = np.array([1, 2, 3, 4, 5]) indices = np.array([0, 2, 4]) print(arr[indices])
輸出
[1, 3, 5]
透過掌握這些技術,您可以有效地從NumPy陣列中提取和處理所需的資料。
陣列操作
重塑陣列
NumPy允許您使用reshape()函式重塑陣列。重塑陣列會更改其維度,同時保持元素總數不變。reshape()函式接收所需的形狀作為元組,並返回具有指定維度的新的陣列。
示例
這是一個重塑陣列的示例:
import numpy as np arr = np.array([1, 2, 3, 4, 5, 6]) reshaped_arr = arr.reshape((2, 3)) print(reshaped_arr)
輸出
[[1 2 3] [4 5 6]]
在上面的示例中,包含六個元素的原始陣列arr被重塑為一個2x3的陣列reshaped_arr。重塑後的陣列保留了原始陣列的元素,但以指定的形狀排列它們。
您還可以使用reshape()函式將多維陣列轉換為一維陣列。透過將形狀指定為-1,NumPy會根據元素總數自動計算合適的維度。
示例
這是一個將多維陣列轉換為一維陣列的示例:
import numpy as np arr = np.array([[1, 2, 3], [4, 5, 6]]) reshaped_arr = arr.reshape(-1) print(reshaped_arr)
輸出
[1 2 3 4 5 6]
連線陣列
NumPy提供諸如**numpy.concatenate()**和**numpy.stack()**之類的函式,用於沿不同軸組合多個數組。連線允許您水平或垂直連線陣列,有效地增加其大小或將它們組合成一個更大的陣列。
**numpy.concatenate()** – 此函式沿現有軸連線陣列。預設情況下,它按行連線陣列(軸0),但您可以指定**axis**引數沿不同的軸連線。
示例
這是一個使用**numpy.concatenate()**連線陣列的示例:
import numpy as np arr1 = np.array([[1, 2], [3, 4]]) arr2 = np.array([[5, 6]]) concatenated_arr = np.concatenate((arr1, arr2), axis=0) print(concatenated_arr)
輸出
[[1 2] [3 4] [5 6]]
在上面的示例中,**arr1**和**arr2**沿軸0連線,生成一個新的陣列**concatenated_arr**。
**numpy.stack()** – 此函式沿新軸堆疊陣列。它接收一系列陣列和**axis**引數,以指定將沿其堆疊陣列的新軸。
示例
這是一個使用**numpy.stack()**堆疊陣列的示例:
import numpy as np arr1 = np.array([1, 2, 3]) arr2 = np.array([4, 5, 6]) stacked_arr = np.stack((arr1, arr2), axis=1) print(stacked_arr)
輸出
[[1 4] [2 5] [3 6]]
在上面的示例中,**arr1**和**arr2**沿新軸(軸1)堆疊,生成一個新的陣列**stacked_arr**。
陣列的數學運算
基本算術運算
NumPy允許您對陣列執行基本的算術運算,例如加法、減法、乘法和除法。這些運算逐元素執行,這意味著單獨運算元組的對應元素。
示例
以下是陣列基本算術運算的示例:
import numpy as np arr1 = np.array([1, 2, 3]) arr2 = np.array([4, 5, 6]) addition = arr1 + arr2 subtraction = arr1 - arr2 multiplication = arr1 * arr2 division = arr1 / arr2 print(addition) print(subtraction) print(multiplication) print(division)
輸出
[5 7 9] [-3 -3 -3] [ 4 10 18] [0.25 0.4 0.5 ]
在上面的示例中,基本的算術運算逐元素應用於**arr1**和**arr2**的對應元素,生成新的陣列addition、subtraction、multiplication和division。
數學函式
NumPy提供了廣泛的數學函式,可以逐元素應用於陣列。這些函式包括三角函式、對數函式、指數函式等等。
示例
以下是將數學函式應用於陣列的示例:
import numpy as np arr = np.array([1, 2, 3]) sin_values = np.sin(arr) log_values = np.log(arr) exp_values = np.exp(arr) print(sin_values) print(log_values) print(exp_values)
輸出
[0.84147098 0.90929743 0.14112001] [0. 0.69314718 1.09861229] [ 2.71828183 7.3890561 20.08553692]
在上面的示例中,np.sin()、np.log()和np.exp()函式逐元素應用於陣列arr,生成新的陣列sin_values、log_values和exp_values。
統計函式
NumPy提供各種統計函式,用於計算陣列上的統計量度。這些函式包括計算平均值、標準差、最小值、最大值等等。
示例
以下是使用陣列統計函式的示例:
import numpy as np arr = np.array([1, 2, 3, 4, 5]) mean_value = np.mean(arr) std_value = np.std(arr) min_value = np.min(arr) max_value = np.max(arr) print(mean_value) print(std_value) print(min_value) print(max_value)
輸出
3.0 1.4142135623730951 1 5
在上面的示例中,np.mean()、np.std()、np.min()和np.max()函式用於計算陣列arr的平均值、標準差、最小值和最大值。
結論
NumPy陣列是Python中科學計算的基本資料結構。我們介紹了使用NumPy陣列的基本知識,包括建立陣列、訪問元素、操作其形狀、執行數學運算和比較陣列。
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP