[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 的功能應用到實際項目中,進一步鞏固你的知識。

歡迎來到我的部落格!這裡記錄了軟體工程師的日常生活點滴,並分享程式設計與演算法的實用教學。無論你是初學者還是有經驗的開發者,都能在這裡找到深入淺出的技術解析與實戰技巧。此外,我也會分享工作中的心路歷程與學習心得,讓你不僅學到技術,更能瞭解軟體開發的實際應用與挑戰。希望透過這個平台,能與你共同成長,激發對技術的熱情!
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
以下是針對上一篇文章"[Python教學] Seaborn:高階資料視覺化工具"的課後練習中每個問題的詳細解答,包括程式碼和結果解釋。
Seaborn 是一個基於 Matplotlib 的高階資料視覺化庫,專為統計圖表設計。與 Matplotlib 相比,Seaborn 提供了更簡潔的語法、更美觀的預設樣式,以及與 Pandas 的緊密整合,非常適合用於數據分析和探索性資料分析 (EDA)。
Matplotlib 是 Python 中最流行且功能強大的資料視覺化工具之一。它能夠生成各種靜態、動態及互動式的圖表,是資料分析與科學計算的重要組成部分。在本教學中,我們將詳細介紹 Matplotlib 的核心功能,並以範例逐步展示如何繪製基本與進階圖表。
Pandas 是 Python 的一個強大數據操作與分析庫。它提供高效且靈活的資料結構,如 Series 和 DataFrame,適合用於資料清理、操作及分析。在本教學中,我們將深入探討 Pandas 的核心功能,並以範例展示如何進行資料處理。
在這篇文章中,我們將深入探討 Python 中的非同步程式設計,特別是使用 asyncio 模組來實現事件循環和協程。這將幫助你理解如何在 I/O 密集型任務中提高效率,並充分利用 Python 的非同步特性。
在這篇文章中,我們將深入探討 Python 中的平行程式設計,特別是使用 threading 和 multiprocessing 模組來實現多執行緒和多進程的應用。這些技術可以幫助我們充分利用現代 CPU 的多核心架構,提高程式的執行效率。
以下是針對上一篇文章"[Python教學] Seaborn:高階資料視覺化工具"的課後練習中每個問題的詳細解答,包括程式碼和結果解釋。
Seaborn 是一個基於 Matplotlib 的高階資料視覺化庫,專為統計圖表設計。與 Matplotlib 相比,Seaborn 提供了更簡潔的語法、更美觀的預設樣式,以及與 Pandas 的緊密整合,非常適合用於數據分析和探索性資料分析 (EDA)。
Matplotlib 是 Python 中最流行且功能強大的資料視覺化工具之一。它能夠生成各種靜態、動態及互動式的圖表,是資料分析與科學計算的重要組成部分。在本教學中,我們將詳細介紹 Matplotlib 的核心功能,並以範例逐步展示如何繪製基本與進階圖表。
Pandas 是 Python 的一個強大數據操作與分析庫。它提供高效且靈活的資料結構,如 Series 和 DataFrame,適合用於資料清理、操作及分析。在本教學中,我們將深入探討 Pandas 的核心功能,並以範例展示如何進行資料處理。
在這篇文章中,我們將深入探討 Python 中的非同步程式設計,特別是使用 asyncio 模組來實現事件循環和協程。這將幫助你理解如何在 I/O 密集型任務中提高效率,並充分利用 Python 的非同步特性。
在這篇文章中,我們將深入探討 Python 中的平行程式設計,特別是使用 threading 和 multiprocessing 模組來實現多執行緒和多進程的應用。這些技術可以幫助我們充分利用現代 CPU 的多核心架構,提高程式的執行效率。
你可能也想看
Google News 追蹤
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
Python資料視覺化在數據分析中扮演關鍵角色,透過視覺化捕捉數據模式、趨勢和異常,透過Matplotlib等工具創建專業圖表變相對簡單和高效。
Thumbnail
pandas是用於資料操縱和分析的Python軟體庫。它建造在 NumPy 基礎上,並為操縱數值表格和時間序列,提供了資料結構和運算操作。 Pandas 的主要資料結構包含 Series 和 DataFrame 物件,由於 Pandas 本身基 Numpy 所以在使用大量資料運算時效能表現也優於原
Thumbnail
NumPy 是 Python 語言的一個擴充程式庫,支援高階大規模的多維陣列與矩陣運算的數學函式函式庫。 NumPy 2.0.0 是自 2006 年以來的第一個主要發行版本,此重要版本標誌著 NumPy 發展歷程中的一項重要里程碑,為使用者提供了豐富的增強功能和改進,並為未來的功能開發奠定了基礎。
NumPy(Numeric Python)是Python中用於科學計算的核心庫之一。它提供了高性能的多維陣列對象(即ndarray)以及用於處理這些陣列的各種函數和工具。 在NumPy中,有幾個常用的指令可以用來創建陣列
Thumbnail
本文介紹了各種運算符的用法和優先級,包括算術運算符、比較運算符、賦值運算符、邏輯運算符、位元運算符、成員運算符和身份運算符。每種運算符都有詳細的描述和示例程式碼,幫助理解其功能和用法。
Thumbnail
在這篇文章中,我們講述瞭如何使用numpy.where方法查找Numpy數組中值的索引。除了介紹了numpy.where的基本用法外,還舉了一些應用實例進行了詳細說明。文章最後提供了其他應用領域以及相關參考文獻。
Thumbnail
NumPy在圖像處理、機器學習、數學和統計學等領域中被廣泛應用。 以下是一些常見的應用場景: 數據處理和分析: NumPy提供了高效的多維數組(nd array)和相應的操作函數,使得對大型數據集進行快速、有效的操作變得容易。
Thumbnail
Python 提供了一系列內建函式,其中一部分涉及數學和數學操作。 以下是一些常用的內建函式和數學相關的函式: 基本數學運算: abs(x): 返回 x 的絕對值。 result = abs(-5) print(result) # 輸出: 5 max(iterable) 和 min(
Thumbnail
本文將從算術運算符開始,介紹它們如何用於基本數學運算,接著介紹比較運算符和邏輯運算符,這些運算符在程序中用於進行決策和控制流程,每個運算符都有範例程式,能幫助你更好的了解。
Thumbnail
本文將介紹如何在 Python 中定義和使用變數,並解釋常見的數據類型,如整數、浮點數、字符串和布林值,了解如何使用變數以及識別不同的數據類型,對於任何程式語言來說都是基礎的第一步。
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
Python資料視覺化在數據分析中扮演關鍵角色,透過視覺化捕捉數據模式、趨勢和異常,透過Matplotlib等工具創建專業圖表變相對簡單和高效。
Thumbnail
pandas是用於資料操縱和分析的Python軟體庫。它建造在 NumPy 基礎上,並為操縱數值表格和時間序列,提供了資料結構和運算操作。 Pandas 的主要資料結構包含 Series 和 DataFrame 物件,由於 Pandas 本身基 Numpy 所以在使用大量資料運算時效能表現也優於原
Thumbnail
NumPy 是 Python 語言的一個擴充程式庫,支援高階大規模的多維陣列與矩陣運算的數學函式函式庫。 NumPy 2.0.0 是自 2006 年以來的第一個主要發行版本,此重要版本標誌著 NumPy 發展歷程中的一項重要里程碑,為使用者提供了豐富的增強功能和改進,並為未來的功能開發奠定了基礎。
NumPy(Numeric Python)是Python中用於科學計算的核心庫之一。它提供了高性能的多維陣列對象(即ndarray)以及用於處理這些陣列的各種函數和工具。 在NumPy中,有幾個常用的指令可以用來創建陣列
Thumbnail
本文介紹了各種運算符的用法和優先級,包括算術運算符、比較運算符、賦值運算符、邏輯運算符、位元運算符、成員運算符和身份運算符。每種運算符都有詳細的描述和示例程式碼,幫助理解其功能和用法。
Thumbnail
在這篇文章中,我們講述瞭如何使用numpy.where方法查找Numpy數組中值的索引。除了介紹了numpy.where的基本用法外,還舉了一些應用實例進行了詳細說明。文章最後提供了其他應用領域以及相關參考文獻。
Thumbnail
NumPy在圖像處理、機器學習、數學和統計學等領域中被廣泛應用。 以下是一些常見的應用場景: 數據處理和分析: NumPy提供了高效的多維數組(nd array)和相應的操作函數,使得對大型數據集進行快速、有效的操作變得容易。
Thumbnail
Python 提供了一系列內建函式,其中一部分涉及數學和數學操作。 以下是一些常用的內建函式和數學相關的函式: 基本數學運算: abs(x): 返回 x 的絕對值。 result = abs(-5) print(result) # 輸出: 5 max(iterable) 和 min(
Thumbnail
本文將從算術運算符開始,介紹它們如何用於基本數學運算,接著介紹比較運算符和邏輯運算符,這些運算符在程序中用於進行決策和控制流程,每個運算符都有範例程式,能幫助你更好的了解。
Thumbnail
本文將介紹如何在 Python 中定義和使用變數,並解釋常見的數據類型,如整數、浮點數、字符串和布林值,了解如何使用變數以及識別不同的數據類型,對於任何程式語言來說都是基礎的第一步。