[Python教學] Numpy:數據處理與科學計算專家

更新於 發佈於 閱讀時間約 7 分鐘

在 Python 的數據處理與科學計算領域,NumPy 是一個不可或缺的基礎工具。它的強大在於提供了高效的多維陣列操作,並支援向量化運算,極大地提升了程式執行效率。本篇文章將詳細介紹 NumPy 的基本概念、功能以及實踐應用,幫助你快速上手這個重要的工具。


什麼是 NumPy?

NumPy(Numerical Python)是一個 Python 的開源函式庫,主要功能包括:

  1. N 維陣列(ndarray):提供高效能的多維數據結構。
  2. 向量化運算:支援數學運算、矩陣操作等高效計算。
  3. 隨機數生成與科學計算功能:如線性代數、傅里葉變換等。
  4. 與其他函式庫整合:例如 Pandas、Scikit-learn 和 TensorFlow 等。

要使用 NumPy,首先需要安裝並匯入該函式庫:

pip install numpy

在程式碼中匯入:

import numpy as np

NumPy 的基礎操作

1. 建立 NumPy 陣列

NumPy 的核心是 ndarray,它是一種多維數組。以下是建立陣列的幾種方式:

從列表或元組建立陣列

import numpy as np

# 從列表建立一維陣列
arr1 = np.array([1, 2, 3, 4])
print("一維陣列:", arr1)

# 從嵌套列表建立二維陣列
arr2 = np.array([[1, 2, 3], [4, 5, 6]])
print("二維陣列:\n", arr2)

使用內建函數生成數據

NumPy 提供多種方便的數據生成函數:

# 生成全 0 陣列
zeros = np.zeros((2, 3))
print("全 0 陣列:\n", zeros)

# 生成全 1 陣列
ones = np.ones((3, 4))
print("全 1 陣列:\n", ones)

# 生成隨機數陣列
random_arr = np.random.random((3, 3))
print("隨機數陣列:\n", random_arr)

# 生成範圍數字
range_arr = np.arange(0, 10, 2) # 從 0 到 10,每次遞增 2
print("範圍陣列:", range_arr)

# 生成線性區間
linspace_arr = np.linspace(0, 1, 5) # 從 0 到 1 均勻分成 5 個數字
print("線性區間陣列:", linspace_arr)

2. 陣列的屬性與操作

查看陣列屬性

arr = np.array([[1, 2, 3], [4, 5, 6]])

print("陣列形狀 (shape):", arr.shape) # (2, 3)
print("元素個數 (size):", arr.size) # 6
print("資料型別 (dtype):", arr.dtype) # int32 或 int64

陣列的重塑與轉置

# 重塑陣列
reshaped = arr.reshape((3, 2)) # 改為 3 行 2 列
print("重塑後陣列:\n", reshaped)

# 陣列轉置
transposed = arr.T
print("轉置後陣列:\n", transposed)

3. 陣列運算

NumPy 支援多種高效運算,包括數學運算、邏輯操作以及矩陣操作。

基礎數學運算

arr = np.array([1, 2, 3, 4])

print("加法:", arr + 2)
print("乘法:", arr * 3)
print("平方:", arr ** 2)

矩陣運算

A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])

# 矩陣相乘
C = np.dot(A, B)
print("矩陣相乘:\n", C)

# 矩陣行列式
det = np.linalg.det(A)
print("矩陣行列式:", det)

4. 陣列索引與切片

NumPy 提供強大的索引與切片功能,讓你可以輕鬆操作多維數據。

索引與切片

arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

# 單個元素
print("第一行第二列元素:", arr[0, 1]) # 2

# 行列切片
print("第一行:", arr[0, :]) # [1, 2, 3]
print("第二列:", arr[:, 1]) # [2, 5, 8]

條件篩選

arr = np.array([1, 2, 3, 4, 5, 6])

# 篩選出大於 3 的元素
filtered = arr[arr > 3]
print("篩選結果:", filtered) # [4, 5, 6]

5. 實踐:NumPy 在資料處理中的應用

示例 1:計算數據平均值與標準差

data = np.random.random(100)  # 生成 100 個隨機數

mean = np.mean(data)
std_dev = np.std(data)
print(f"平均值:{mean:.2f}, 標準差:{std_dev:.2f}")

示例 2:生成隨機數據並進行排序

data = np.random.randint(0, 100, 10)  # 生成 10 個 0 到 100 的隨機整數
sorted_data = np.sort(data)
print("原始數據:", data)
print("排序後數據:", sorted_data)

示例 3:應用於圖像處理

NumPy 常用於處理圖像數據,例如灰階圖像可以表示為 2D 陣列:

import numpy as np
import matplotlib.pyplot as plt

# 模擬一個 5x5 的灰階圖像
image = np.random.random((5, 5))
plt.imshow(image, cmap="gray")
plt.title("image")
plt.colorbar()
plt.show()
raw-image



總結

NumPy 是 Python 科學計算的基石,其高效的陣列操作和豐富的數學函數讓你能輕鬆處理各類數據。本篇文章涵蓋了 NumPy 的基本功能及其應用,希望能幫助你快速入門並學會活用這個強大的工具。在學習的過程中,嘗試將 NumPy 的功能應用到實際項目中,進一步鞏固你的知識。

留言
avatar-img
留言分享你的想法!
avatar-img
追極光的北極熊|軟體工程師的小天地
12會員
163內容數
歡迎來到我的部落格!這裡記錄了軟體工程師的日常生活點滴,並分享程式設計與演算法的實用教學。無論你是初學者還是有經驗的開發者,都能在這裡找到深入淺出的技術解析與實戰技巧。此外,我也會分享工作中的心路歷程與學習心得,讓你不僅學到技術,更能瞭解軟體開發的實際應用與挑戰。希望透過這個平台,能與你共同成長,激發對技術的熱情!
2025/04/28
當我們開發程式時,功能能正常運作固然重要,但在資料量變大或執行時間變長時,效能就成為不可忽視的一環。尤其在 Web 應用、資料分析或科學運算中,程式跑得快與否,直接影響使用者體驗與系統成本。
2025/04/28
當我們開發程式時,功能能正常運作固然重要,但在資料量變大或執行時間變長時,效能就成為不可忽視的一環。尤其在 Web 應用、資料分析或科學運算中,程式跑得快與否,直接影響使用者體驗與系統成本。
2025/04/22
嘿,大家好!上篇教學文章我們做出了一個待辦事項清單,已經有點小工具的感覺了吧?今天我們要再升級,來做個「簡單記事本」。這個專案不只可以寫東西,還能存檔、讀檔,甚至換字體大小,感覺就像自己寫了個迷你軟體!
2025/04/22
嘿,大家好!上篇教學文章我們做出了一個待辦事項清單,已經有點小工具的感覺了吧?今天我們要再升級,來做個「簡單記事本」。這個專案不只可以寫東西,還能存檔、讀檔,甚至換字體大小,感覺就像自己寫了個迷你軟體!
2025/04/16
嘿,大家好!走到這一步,我們已經玩過 Tkinter 的基本招式、佈局、事件處理,還搞了些進階元件,應該有點信心了吧?今天我們要把這些功夫練成一套連招,來做個實用的「待辦事項清單」(To-Do List),順便聊聊怎麼把程式寫得更漂亮、更好用。準備好了嗎?這就上場啦!
2025/04/16
嘿,大家好!走到這一步,我們已經玩過 Tkinter 的基本招式、佈局、事件處理,還搞了些進階元件,應該有點信心了吧?今天我們要把這些功夫練成一套連招,來做個實用的「待辦事項清單」(To-Do List),順便聊聊怎麼把程式寫得更漂亮、更好用。準備好了嗎?這就上場啦!
看更多
你可能也想看
Thumbnail
2025 vocus 推出最受矚目的活動之一——《開箱你的美好生活》,我們跟著創作者一起「開箱」各種故事、景點、餐廳、超值好物⋯⋯甚至那些讓人會心一笑的生活小廢物;這次活動不僅送出了許多獎勵,也反映了「內容有價」——創作不只是分享、紀錄,也能用各種不同形式變現、帶來實際收入。
Thumbnail
2025 vocus 推出最受矚目的活動之一——《開箱你的美好生活》,我們跟著創作者一起「開箱」各種故事、景點、餐廳、超值好物⋯⋯甚至那些讓人會心一笑的生活小廢物;這次活動不僅送出了許多獎勵,也反映了「內容有價」——創作不只是分享、紀錄,也能用各種不同形式變現、帶來實際收入。
Thumbnail
嗨!歡迎來到 vocus vocus 方格子是台灣最大的內容創作與知識變現平台,並且計畫持續拓展東南亞等等國際市場。我們致力於打造讓創作者能夠自由發表、累積影響力並獲得實質收益的創作生態圈!「創作至上」是我們的核心價值,我們致力於透過平台功能與服務,賦予創作者更多的可能。 vocus 平台匯聚了
Thumbnail
嗨!歡迎來到 vocus vocus 方格子是台灣最大的內容創作與知識變現平台,並且計畫持續拓展東南亞等等國際市場。我們致力於打造讓創作者能夠自由發表、累積影響力並獲得實質收益的創作生態圈!「創作至上」是我們的核心價值,我們致力於透過平台功能與服務,賦予創作者更多的可能。 vocus 平台匯聚了
Thumbnail
基礎語法: 1、注釋: 例如:#單行注釋 ““多行注釋”” 2、變量:直接賦值, 例如:x=5 3、數據類型: 例如:int, float, str, bool 4、類型轉換: 例如:int( ), float( ), str( ), bool( )
Thumbnail
基礎語法: 1、注釋: 例如:#單行注釋 ““多行注釋”” 2、變量:直接賦值, 例如:x=5 3、數據類型: 例如:int, float, str, bool 4、類型轉換: 例如:int( ), float( ), str( ), bool( )
Thumbnail
在程式設計中,變數是儲存資料的基本單位,而型別則決定了資料的格式及使用方式。本文介紹了 Python 開發中的多種資料型別,包括整型、浮點型、字串、布林型及複數型,還提供了變數命名的規則及其使用方法。進一步探索運算子,包括比較運算子和邏輯運算子,以增強程式的邏輯判斷能力。
Thumbnail
在程式設計中,變數是儲存資料的基本單位,而型別則決定了資料的格式及使用方式。本文介紹了 Python 開發中的多種資料型別,包括整型、浮點型、字串、布林型及複數型,還提供了變數命名的規則及其使用方法。進一步探索運算子,包括比較運算子和邏輯運算子,以增強程式的邏輯判斷能力。
Thumbnail
pandas是用於資料操縱和分析的Python軟體庫。它建造在 NumPy 基礎上,並為操縱數值表格和時間序列,提供了資料結構和運算操作。 Pandas 的主要資料結構包含 Series 和 DataFrame 物件,由於 Pandas 本身基 Numpy 所以在使用大量資料運算時效能表現也優於原
Thumbnail
pandas是用於資料操縱和分析的Python軟體庫。它建造在 NumPy 基礎上,並為操縱數值表格和時間序列,提供了資料結構和運算操作。 Pandas 的主要資料結構包含 Series 和 DataFrame 物件,由於 Pandas 本身基 Numpy 所以在使用大量資料運算時效能表現也優於原
Thumbnail
NumPy 是 Python 語言的一個擴充程式庫,支援高階大規模的多維陣列與矩陣運算的數學函式函式庫。 NumPy 2.0.0 是自 2006 年以來的第一個主要發行版本,此重要版本標誌著 NumPy 發展歷程中的一項重要里程碑,為使用者提供了豐富的增強功能和改進,並為未來的功能開發奠定了基礎。
Thumbnail
NumPy 是 Python 語言的一個擴充程式庫,支援高階大規模的多維陣列與矩陣運算的數學函式函式庫。 NumPy 2.0.0 是自 2006 年以來的第一個主要發行版本,此重要版本標誌著 NumPy 發展歷程中的一項重要里程碑,為使用者提供了豐富的增強功能和改進,並為未來的功能開發奠定了基礎。
Thumbnail
在這篇文章中,我們講述瞭如何使用numpy.where方法查找Numpy數組中值的索引。除了介紹了numpy.where的基本用法外,還舉了一些應用實例進行了詳細說明。文章最後提供了其他應用領域以及相關參考文獻。
Thumbnail
在這篇文章中,我們講述瞭如何使用numpy.where方法查找Numpy數組中值的索引。除了介紹了numpy.where的基本用法外,還舉了一些應用實例進行了詳細說明。文章最後提供了其他應用領域以及相關參考文獻。
Thumbnail
NumPy在圖像處理、機器學習、數學和統計學等領域中被廣泛應用。 以下是一些常見的應用場景: 數據處理和分析: NumPy提供了高效的多維數組(nd array)和相應的操作函數,使得對大型數據集進行快速、有效的操作變得容易。
Thumbnail
NumPy在圖像處理、機器學習、數學和統計學等領域中被廣泛應用。 以下是一些常見的應用場景: 數據處理和分析: NumPy提供了高效的多維數組(nd array)和相應的操作函數,使得對大型數據集進行快速、有效的操作變得容易。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News