學習Numpy | Python科學計算工具 | 3D影像陣列操作
目錄
- Numpy 簡介
- Numpy 的安裝
- 建立 Numpy 陣列
- Numpy 陣列的特性
- Numpy 陣列的操作
- Numpy 陣列的切片和索引
- Numpy 的數學和統計函數
- Numpy 與 Matplotlib 的結合
- 從外部文件讀取和儲存 Numpy 陣列
- Pandas - Python 的資料分析和操作工具
🧮 Numpy 簡介
Numpy 是一個基礎的科學計算套件,可以在 Python 中處理多維陣列(ndarray),並提供了許多高層次的數學函數、邏輯運算、傅立葉轉換、線性代數和統計等功能。儘管 Numpy 的部分部分是用 Python 編寫的,但其中大部分需要快速運算的部分是用 C 或 C++ 編寫的,因此可以比純 Python 陣列 (list) 快上 50 倍以上。
⚙️ Numpy 的安裝
要使用 Numpy,首先需要安裝它。使用 Anaconda 版本的 Python 已經包含了 Numpy,因此如果您已經安裝了 Anaconda,可以直接使用。如果您沒有安裝 Anaconda,可以使用以下命令在命令行界面中安裝 Numpy:
pip install numpy
🏗️ 建立 Numpy 陣列
要開始使用 Numpy,您需要先導入它。通常,我們使用 import numpy as np
的方式導入 Numpy,並使用 np
作為別名來簡化程式碼中的使用。以下是一些常見的建立 Numpy 陣列的方法:
- 使用
np.array()
函數:您可以通過傳入一個 Python 列表來建立 Numpy 陣列。
import numpy as np
arr1 = np.array([1, 2, 3, 4, 5])
- 使用
np.arange()
函數:您可以通過指定範圍和步長來建立一個序列陣列。
arr2 = np.arange(0, 10, 2) # 從 0 到 10 (不含 10),間隔 2
- 使用
np.zeros()
和 np.ones()
函數:您可以建立全為 0 或全為 1 的陣列。
arr3 = np.zeros((3, 3)) # 3x3 全為 0 的陣列
arr4 = np.ones((2, 2)) # 2x2 全為 1 的陣列
- 使用
np.random
模塊:您可以使用 np.random
模塊生成隨機數的陣列。
arr5 = np.random.rand(2, 3) # 2x3 隨機數的陣列
💡 Numpy 陣列的特性
-
Numpy 陣列的大小在創建時是固定的,不像 Python 的列表可以在運行時增長。如果需要更改 Numpy 陣列的大小,將會創建一個新的陣列,並刪除原始的陣列。
-
Numpy 陣列的元素需為相同的資料型別,而 Python 的列表可以包含不同的資料型別。這樣做的好處是陣列在記憶體中佔用的空間是固定的,因為它們所有的元素都具有相同的大小,而不會因為不同型別的元素而佔用不同大小的空間。
-
Numpy 陣列的元素在記憶體中是連續存儲的,也就是說相鄰的元素在內存中是連續的,這使得陣列的操作更高效,相比於 Python 的列表,其內存分配不連續。
🛠️ Numpy 陣列的操作
Numpy 陣列提供了許多能夠進行數學運算和數組操作的函數。以下是一些常見的 Numpy 陣列操作的示例:
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
c = a + b # [5, 7, 9]
d = b - a # [3, 3, 3]
e = a * 2 # [2, 4, 6]
f = b / 2 # [2, 2.5, 3]
g = np.square(a) # [1, 4, 9]
h = np.sqrt(b) # [2, 2.236, 2.449]
i = np.dot(a, b) # 32
j = np.cross(a, b) # [-3, 6, -3]
k = np.transpose(a) # [1, 2, 3]
l = np.reshape(b, (3, 1)) # [[4], [5], [6]]
🔍 Numpy 陣列的切片與索引
Numpy 陣列提供了方便的方法來訪問和切片陣列中的元素。以下是一些常見的切片和索引的示例:
m = arr1[2] # 3
n = arr1[1:4] # [2, 3, 4]
o = arr3[0, 1] # 0
p = arr3[:2, 1:] # [[0, 0], [0, 0]]
📈 Numpy 的數學和統計函數
Numpy 提供了許多數學和統計函數,可以用於數據分析和計算。以下是一些常用的數學和統計函數的示例:
q = np.mean(arr1) # 3.0
r = np.sum(arr1) # 15
s = np.max(arr1) # 5
t = np.min(arr1) # 1
u = np.std(arr1) # 1.414
v = np.var(arr1) # 2.0
📊 Numpy 與 Matplotlib 的結合
Numpy 與 Matplotlib 這個繪圖庫結合在一起,可以方便地對數據進行可視化。以下是一個簡單的示例:
import matplotlib.pyplot as plt
x = np.array([1, 2, 3, 4, 5])
y = np.array([2, 4, 6, 8, 10])
plt.plot(x, y)
plt.xlabel('x')
plt.ylabel('y')
plt.title('Line Plot')
plt.show()
📂 從外部文件讀取和儲存 Numpy 陣列
在某些情況下,您可能需要從外部文件中讀取數據或將 Numpy 陣列保存到文件中。Numpy 提供了幾種方法來實現這一點。
- 使用
np.loadtxt()
函數:您可以使用 np.loadtxt()
函數從文本文件中讀取數據。
data = np.loadtxt('data.txt')
- 使用
np.save()
和 np.load()
函數:您可以使用 np.save()
函數將 Numpy 陣列保存到 .npy 文件中,並使用 np.load()
函數加載這些數據。
np.save('data.npy', data)
loaded_data = np.load('data.npy')
- 使用
np.genfromtxt()
函數:類似於 np.loadtxt()
,np.genfromtxt()
函數也可以從文本文件中讀取數據,並提供更多的參數選項。
data = np.genfromtxt('data.txt', delimiter=',')
🐼 Pandas - Python 的資料分析和操作工具
Pandas 是一個功能強大且易於使用的 Python 函式庫,用於資料操作和分析。使用 Pandas,您可以輕鬆地讀取、處理和操作結構化數據,例如 CSV 文件或 SQL 數據庫。
Pandas 提供了兩種主要數據結構:Series 和 DataFrame。Series 是一個一維的標記數據結構,類似於 Numpy 陣列。DataFrame 是一個二維的表格數據結構,類似於 Excel 或 SQL 表格。
使用 Pandas 可以進行數據的讀取、選擇、過濾、分組、合併、排序和計算等操作。這使得 Pandas 成為數據科學和機器學習中的重要工具。
以上是對 Numpy 的基本介紹,希望能幫助您開始使用和了解 Numpy。如果您想深入了解更多關於 Numpy 的詳細信息,請訪問 numpy.org 獲取詳細的文檔。
感謝觀看,如果您在這裡學到了一些有價值的知識,請點擊“喜歡”和“訂閱”按鈕以獲取更多的編程教程。Joey Go 敬上!
🌐 資源