【資料處理神器區 - NumPy系列】 奠定資料科學的基礎模組(安裝與認識維度)

更新 發佈閱讀 7 分鐘

學習資料科學的過程中相信最熱門的目前應該是Python程式語言了,而Python的世界裡再進行資料科學時最常用的有「Pandas」、「SciPy」、「Scikit-learn」...等,而這些的基礎幾乎都與「NumPy」離不開關係,因為「NumPy」就是地基,這些較為高階的套件則是基於地基發展而起。

它除了擁有豐富的數學函式庫之外,數據的索引切片、各式維度資料結構轉換、排序、合併、重朔這些對它來說都是小兒科,究竟有沒有這麼強呢? 就讓我們用幾個實際例子來說明一下。

安裝

使用NumPy之前的首要任務就是安裝拉,安裝通常有以下兩種方式:

Conda

至於什麼是Conda呢? 我們下一次會專門對Conda進行介紹,之後再補充於此...


conda create -n ${環境名稱}
conda activate ${環境名稱}

conda install numpy


Pip


pip install numpy


輔助工具: 繪圖

這邊由於會示範二維陣列與多維度,以圖來呈現會更容易理解, 因此我們會使用圖表套件「matplotlib」來進行圖表的呈現, 關於圖表套件是什麼呢? 歡迎參考:

【Google Colab Python系列】 視覺化資料Matplotlib 新手村


!pip install matplotlib


引入模組


# 引入numpy模組並命名為np
import numpy as np


基礎概念 - 認識維度陣列

當我們進行資料科學(Data Science)或者機器學習(Machine Learning)時,通常都會將資料轉換成多維度的資料,那麼在NumPy裝載這些資料的容器就是「ndarray」這個名詞我們之後會常常看到,而這個容器裡面又依照數據的複雜度可以裝載一維陣列、二維陣列、多維陣列。

raw-image

圖片來源...

有了概念之後,我們就實際來繪製看看吧! 如此一來更能加深印象。

一維陣列


import numpy as np
import matplotlib.pyplot as plt

# 生成一維數據
data_1d = np.array([1, 2, 3, 4, 5])

# 以下是為了用圖表進行概念呈現,基本上可以不用看這一段,上面那部分才是真正的資料結構...
dd = data_1d.reshape(1, -1)

plt.imshow(dd, cmap='viridis', aspect='auto')

for y in range(dd.shape[0]):
for x in range(dd.shape[1]):
plt.text(x, y, str(dd[y, x]), color='white', ha='center', va='center')

plt.colorbar()
plt.title('1D Array')
plt.axis('off') # 關閉軸的顯示
plt.show()
raw-image

圖片來源...

二維陣列


import numpy as np
import matplotlib.pyplot as plt

# 宣告「二維陣列」
data_2d = np.array([
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
])

x = np.arange(data_2d.shape[1])
for i, row in enumerate(data_2d):
plt.bar(x, row, alpha=0.7, label=f'Row {i+1}')
plt.xlabel('Column Index')
plt.ylabel('Value')
plt.title('2D Array')
plt.legend()
plt.show()
raw-image

圖片來源...

三維陣列


import numpy as np
import matplotlib.pyplot as plt

# 宣告「三維陣列」
data_3d = np.array([
[
[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12]
],
[
[13, 14, 15, 16],
[17, 18, 19, 20],
[21, 22, 23, 24]
]
])

x, y, z = data_3d.nonzero()
ax = plt.axes(projection='3d')
ax.scatter3D(x, y, z, c=data_3d[x, y, z], cmap='viridis')
plt.title('3D Array')
plt.show()
raw-image

圖片來源...

介紹幾個ndarray的一些屬性

這裡可能會有點生硬,請小心服用,雖然藥苦,但對我們的根基是有相當大的幫助,加油,持續學習吧!


# 資料樣本
sample = np.array([
[
[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12]
],
[
[13, 14, 15, 16],
[17, 18, 19, 20],
[21, 22, 23, 24]
]
])

# ndarray.ndim: 資料的維度,樣本是三維資料,因此預期為「3
assert(sample.ndim == 3)
print(f'ndim: {sample.ndim}')

# ndarray.shape: 每個維度的大小,預期樣本資料是2 x 3 x 4
assert(sample.shape == (2, 3, 4))
print(f'shape: {sample.shape}')

# ndarray.size: 資料元素的總數,也就是乘積, 預期: 24
assert(sample.size == 24)
print(f'size: {sample.size}')

# ndarray.dtype: 資料元素的型態, 預期為int64
assert(sample.dtype.name == 'int64')
print(f'dtype: {sample.dtype}')

# ndarray.itemsize: 資料中每個元素的大小, 以byte為單位, 而int64=8byte,因此預期為8
assert(sample.itemsize == 8)
print(f'itemsize: {sample.itemsize}')

# ndarray.data: 資料實際元素的緩衝區,通常我們不會直接使用它
print(f'data: {sample.data}')
raw-image

圖片來源...

今天的範例都在這裡「📦 numpy/numpy_quickstart.ipynb」歡迎自行取用。如何使用請參閱「【Google Colab Python系列】Colab平台與Python如何擦出火花?」。

結語

這次的主題主要認識一下NumPy的基本概念,先學會安裝、引用,再理解一下陣列元素的不同及基礎的屬性代表什麼含意,對於數組具有一定的認識之後,下一章將帶來一些關於陣列的進階應用,敬請期待...,如果有任何問題也歡迎提出討論。

喜歡撰寫文章的你,不妨來了解一下:

Web3.0時代下為創作者、閱讀者打造的專屬共贏平台 — 為什麼要加入?

歡迎加入一起練習寫作,賺取知識

留言
avatar-img
阿Han的沙龍
151會員
325內容數
哈囉,我是阿Han,是一位 👩‍💻 軟體研發工程師,喜歡閱讀、學習、撰寫文章及教學,擅長以圖代文,化繁為簡,除了幫助自己釐清思路之外,也希望藉由圖解的方式幫助大家共同學習,甚至手把手帶您設計出高品質的軟體產品。
阿Han的沙龍的其他內容
2025/01/29
🤔 簡單且靜態就足夠了? 相信我們在開發Python應用程式的過程中, 常常會借用Enum來定義我們可能的選項, 就像顏色紅、綠、黃會有這樣的結構: class Color(str, Enum): RED = 'red' GREED = 'green' YELLOW = 'yel
Thumbnail
2025/01/29
🤔 簡單且靜態就足夠了? 相信我們在開發Python應用程式的過程中, 常常會借用Enum來定義我們可能的選項, 就像顏色紅、綠、黃會有這樣的結構: class Color(str, Enum): RED = 'red' GREED = 'green' YELLOW = 'yel
Thumbnail
2025/01/08
當我們的系統發展到一定程度時, 難免會面臨到正式上線的問題, 要如何讓維運更加簡易呢? 尤其隨著複雜的客製化配置的出現時, 我們應該如何有效的管理, 甚至驗證配置是否如預期資料型態、格式…, 而正好 pydantic 可以滿足這樣的需求, 就讓我們來看看怎麼使用吧! 需安裝的套件 pip i
Thumbnail
2025/01/08
當我們的系統發展到一定程度時, 難免會面臨到正式上線的問題, 要如何讓維運更加簡易呢? 尤其隨著複雜的客製化配置的出現時, 我們應該如何有效的管理, 甚至驗證配置是否如預期資料型態、格式…, 而正好 pydantic 可以滿足這樣的需求, 就讓我們來看看怎麼使用吧! 需安裝的套件 pip i
Thumbnail
2025/01/02
要如何使用unicorn啟動多個FastAPI服務, 歡迎參考我們的「【💊 Python的解憂錦囊 - FastAPI】如何啟動多個Workers」。 當我們試著設計帶入模組化時… 我們在「【💊 Python的解憂錦囊 - FastAPI】使用 lifespan 來共享資料與管理生命週期
Thumbnail
2025/01/02
要如何使用unicorn啟動多個FastAPI服務, 歡迎參考我們的「【💊 Python的解憂錦囊 - FastAPI】如何啟動多個Workers」。 當我們試著設計帶入模組化時… 我們在「【💊 Python的解憂錦囊 - FastAPI】使用 lifespan 來共享資料與管理生命週期
Thumbnail
看更多
你可能也想看
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
這一節談的是向量的定義,以及如何運用向量來建立模擬物體運動時,關於位置和速度間的關係式。
Thumbnail
這一節談的是向量的定義,以及如何運用向量來建立模擬物體運動時,關於位置和速度間的關係式。
Thumbnail
資料型態-變數概念 上面這張圖片傳傳達了三個概念, 常值:可以是數值、浮點數、字串、布林等資料, 變數名稱:這邊也很好理解,就是好記得名稱,這邊使用中文是方便初學者入門, 盒子:代表在Python底層運作的狀況,Python創建變數時,會先在記憶體創建型態物件,這邊是數字型態,所以創建數字物件。
Thumbnail
資料型態-變數概念 上面這張圖片傳傳達了三個概念, 常值:可以是數值、浮點數、字串、布林等資料, 變數名稱:這邊也很好理解,就是好記得名稱,這邊使用中文是方便初學者入門, 盒子:代表在Python底層運作的狀況,Python創建變數時,會先在記憶體創建型態物件,這邊是數字型態,所以創建數字物件。
Thumbnail
数学对于计算机编程来说重要性是毋庸置疑的,更何况我们现在不仅仅是编程,而是走在「人工智能」的路上。可以说,数学应该是最重要的基础。 我们在学习AI的过程当中可能会遇到的一些关于数学方面的一些东西,比如说线性代数里面的矩阵运算,比如说求导,还有一些概率统计,图论方面的一些东西。
Thumbnail
数学对于计算机编程来说重要性是毋庸置疑的,更何况我们现在不仅仅是编程,而是走在「人工智能」的路上。可以说,数学应该是最重要的基础。 我们在学习AI的过程当中可能会遇到的一些关于数学方面的一些东西,比如说线性代数里面的矩阵运算,比如说求导,还有一些概率统计,图论方面的一些东西。
Thumbnail
學習資料科學的過程中相信最熱門的目前應該是Python程式語言了,而Python的世界裡再進行資料科學時最常用的有「Pandas」、「SciPy」、「Scikit-learn」...等,而這些的基礎幾乎都與「NumPy」離不開關係,因為「NumPy」就是地基,這些較為高階的套件則是基於地基發展而起。
Thumbnail
學習資料科學的過程中相信最熱門的目前應該是Python程式語言了,而Python的世界裡再進行資料科學時最常用的有「Pandas」、「SciPy」、「Scikit-learn」...等,而這些的基礎幾乎都與「NumPy」離不開關係,因為「NumPy」就是地基,這些較為高階的套件則是基於地基發展而起。
Thumbnail
R是一種開源的程式語言和環境,主要用於統計計算和數據分析。它擁有強大的統計功能和豐富的圖形繪製工具,使得用戶可以進行數據探索、處理和可視化。R語言的優勢之一是它有一個龐大的使用者社區,提供了大量的套件和資源,使其成為數據科學家和統計學家的首選工具之一。
Thumbnail
R是一種開源的程式語言和環境,主要用於統計計算和數據分析。它擁有強大的統計功能和豐富的圖形繪製工具,使得用戶可以進行數據探索、處理和可視化。R語言的優勢之一是它有一個龐大的使用者社區,提供了大量的套件和資源,使其成為數據科學家和統計學家的首選工具之一。
Thumbnail
Python是一種廣泛使用的程式語言,它有許多內建的模組可以幫助我們進行各種數學運算,其中一個就是math模組,它提供了許多標準的數學函數,例如三角函數、對數函數、指數函數等,在這篇文章中,我們將介紹如何使用math模組。 導入math模組並計算圓周率的值: # 計算圓周率的值 math模組中
Thumbnail
Python是一種廣泛使用的程式語言,它有許多內建的模組可以幫助我們進行各種數學運算,其中一個就是math模組,它提供了許多標準的數學函數,例如三角函數、對數函數、指數函數等,在這篇文章中,我們將介紹如何使用math模組。 導入math模組並計算圓周率的值: # 計算圓周率的值 math模組中
Thumbnail
這篇文章會展示一下如何使用現代化工具,快速把論文上的公式轉換成程式碼 1.首先到 https://accounts.mathpix.com/login 網站註冊一個帳號並下載snipping 這個軟體是專門讓使用者利用截圖的方式把數學式子轉化成LATEX格式 我以一個論文看到的演算法為範例 好然後
Thumbnail
這篇文章會展示一下如何使用現代化工具,快速把論文上的公式轉換成程式碼 1.首先到 https://accounts.mathpix.com/login 網站註冊一個帳號並下載snipping 這個軟體是專門讓使用者利用截圖的方式把數學式子轉化成LATEX格式 我以一個論文看到的演算法為範例 好然後
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News