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

更新於 2023/08/09閱讀時間約 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
116會員
261內容數
哈囉,我是阿Han,是一位 👩‍💻 軟體研發工程師,喜歡閱讀、學習、撰寫文章及教學,擅長以圖代文,化繁為簡,除了幫助自己釐清思路之外,也希望藉由圖解的方式幫助大家共同學習,甚至手把手帶您設計出高品質的軟體產品。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
阿Han的沙龍 的其他內容
過往我們有介紹了「【Google Colab Python系列】 資料處理神器 Pandas 起手式」, 相信對於pandas的基本操作具有一定的基礎知識了, 主要著重在基本的操作, 讓我們快速篩選與分析資料, 但真實的世界是有可能具有很多類型的資料集分別儲存, 而不同的資料集又具有一些相似度, 需
上一篇我們有介紹了「【Google Colab Python系列】 資料處理神器 Pandas 起手式」, 相信對於pandas的基本操作具有一定的基礎知識了, 主要著重在基本的操作, 讓我們快速篩選與分析資料, 但真實的世界是有可能具有很多類型的資料集分別儲存, 而不同的資料集又具有一些相似度
我們都知道AI的模型訓練環節中, 最基礎也是最重要的一環就是「資料」了, 而「資料」要怎麼處理成訓練的養分也是一門重要的工程, 正好在Python的世界裡具有這麼一套神兵利器, 名為「Pandas」, 它是一個快速、強大、靈活且易於使用的開源數據分析和操作工具, 就讓我們好好的來認識一番吧! 乍聽
圖片來源 相信視覺化報表對於資料科學來說是非常重要的一環, 透過圖表來呈現資料的樣態, 過程中分析模型訓練時, 觀察訓練的收斂趨勢是否如我們預期, 視覺化加速我們的判斷時間, 節省找問題的成本。 數據就如同鐵證一般, 當我們常常苦於為什麼訓練出來的A模型這麼差勁,但B模型卻非常好, 這中間發生了
在進入主題之前建議先行閱讀「【程式語言 - Go】來認識Google開發的程式語言…」,初步認識一下Go語言是什麼? 容不容易學習? 才能夠更快的體會此篇章的目的。 當我們在進行軟體開發時,常常會需要有背後的資料庫系統來儲存我們的資料,而資料庫系統也會隨著時代的演進,進行大幅度的更新,那在這樣
Golang(Go)是由Google開發的一種開源的、靜態型別的編程語言,目的在提供一個簡單、高效、安全以及易於擴展的程式語言,特別適用於並發和平行處理,Go語言設計上著重於開發者的生產力,並提供了現代化的語法和豐富的標準庫。 強調簡單易讀,讓我們回歸原始以最簡易的方式來撰寫程式,併發的特性讓日趨
過往我們有介紹了「【Google Colab Python系列】 資料處理神器 Pandas 起手式」, 相信對於pandas的基本操作具有一定的基礎知識了, 主要著重在基本的操作, 讓我們快速篩選與分析資料, 但真實的世界是有可能具有很多類型的資料集分別儲存, 而不同的資料集又具有一些相似度, 需
上一篇我們有介紹了「【Google Colab Python系列】 資料處理神器 Pandas 起手式」, 相信對於pandas的基本操作具有一定的基礎知識了, 主要著重在基本的操作, 讓我們快速篩選與分析資料, 但真實的世界是有可能具有很多類型的資料集分別儲存, 而不同的資料集又具有一些相似度
我們都知道AI的模型訓練環節中, 最基礎也是最重要的一環就是「資料」了, 而「資料」要怎麼處理成訓練的養分也是一門重要的工程, 正好在Python的世界裡具有這麼一套神兵利器, 名為「Pandas」, 它是一個快速、強大、靈活且易於使用的開源數據分析和操作工具, 就讓我們好好的來認識一番吧! 乍聽
圖片來源 相信視覺化報表對於資料科學來說是非常重要的一環, 透過圖表來呈現資料的樣態, 過程中分析模型訓練時, 觀察訓練的收斂趨勢是否如我們預期, 視覺化加速我們的判斷時間, 節省找問題的成本。 數據就如同鐵證一般, 當我們常常苦於為什麼訓練出來的A模型這麼差勁,但B模型卻非常好, 這中間發生了
在進入主題之前建議先行閱讀「【程式語言 - Go】來認識Google開發的程式語言…」,初步認識一下Go語言是什麼? 容不容易學習? 才能夠更快的體會此篇章的目的。 當我們在進行軟體開發時,常常會需要有背後的資料庫系統來儲存我們的資料,而資料庫系統也會隨著時代的演進,進行大幅度的更新,那在這樣
Golang(Go)是由Google開發的一種開源的、靜態型別的編程語言,目的在提供一個簡單、高效、安全以及易於擴展的程式語言,特別適用於並發和平行處理,Go語言設計上著重於開發者的生產力,並提供了現代化的語法和豐富的標準庫。 強調簡單易讀,讓我們回歸原始以最簡易的方式來撰寫程式,併發的特性讓日趨
你可能也想看
Google News 追蹤
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
對於投行工作的朋友來說,要資料真的是一件心很累的事,因為投行要天天跟在各中介機構,還有發行人的各部門後面要資料,難免會讓別人有些反感,設想一下有人天天跟在你屁股後面討債的感覺,真的很煩。所以以下總結出了一些心得體會。
Thumbnail
隨著大數據(Big Data)和人工智慧(AI)技術快速發展,能夠協助我們從價值較低的”資料(Data)"中提煉出價值較高的”資訊(Information)"。但是資料怎麼來呢?邊跟大家介紹一個有多種有趣的資料而且資料量龐大的資料來源:行動電信廠商的資料,可用於市場分析、廣告投放、風險評估。
Thumbnail
不論你是要做紙本書、電子書,你只要擁有「做好上面幾點的資料處理整合」的能力,那麼,你應該就能好好的做出一本書了;不論是之後你要自己排版/製作電子書或是請別人排版/製作電子書,都能幫助自己有更好的邏輯,不會東漏西漏的總是遇到問題需要再花時間去解決。
Thumbnail
要怎麼無視大小寫,用 QUERY 抓取資料呢?方法其實很簡單,一起看下去吧!
Thumbnail
本文章想分享給你,我在閱讀有效合成數據的文章後,產生的理解與思考。 首先,本文章有三個有趣的實驗問題: 資料前處理(Data-Preprocession)對合成數據效度的影響。 是否需要對合成的機器學習模型調參(Tuning)。 效度測量是否能預測合成數據訓練的機器學習模型的準確度。
Thumbnail
常建檔完成申報單位基本資料、所得人資料、所得資料等步驟後,就已經完成各類所得申報時所需要的資料,接下來就是將您建檔的資料,轉出成標準的檔案格式操作步驟為A.6 申報資料產生處理
Thumbnail
每個人使用後的數位足跡,都被拿去利用,轉換成利潤分配,難道當事人不會覺得很奇怪或不舒服嗎?還是覺得說無所謂?只要方便就好,至於使用後的數據或個資被整個產業鍊甚至世界拿去利用都沒差?
Thumbnail
在基礎教學完成後,接下來我們就要來學習檔案處理,不論我們今天要分析哪些數據,都需要將數據存取下來並且利用python去讀取出來才能分析,所以這步驟是我們爬蟲的第一步,必須要好好學習唷!!
Thumbnail
<p>腦神經科學的研究認為,人腦天生會去尋找各種意義與連結,在金融領域的技術線圖容易讓人潛意識裡做出趨勢延伸的推論。</p>
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
對於投行工作的朋友來說,要資料真的是一件心很累的事,因為投行要天天跟在各中介機構,還有發行人的各部門後面要資料,難免會讓別人有些反感,設想一下有人天天跟在你屁股後面討債的感覺,真的很煩。所以以下總結出了一些心得體會。
Thumbnail
隨著大數據(Big Data)和人工智慧(AI)技術快速發展,能夠協助我們從價值較低的”資料(Data)"中提煉出價值較高的”資訊(Information)"。但是資料怎麼來呢?邊跟大家介紹一個有多種有趣的資料而且資料量龐大的資料來源:行動電信廠商的資料,可用於市場分析、廣告投放、風險評估。
Thumbnail
不論你是要做紙本書、電子書,你只要擁有「做好上面幾點的資料處理整合」的能力,那麼,你應該就能好好的做出一本書了;不論是之後你要自己排版/製作電子書或是請別人排版/製作電子書,都能幫助自己有更好的邏輯,不會東漏西漏的總是遇到問題需要再花時間去解決。
Thumbnail
要怎麼無視大小寫,用 QUERY 抓取資料呢?方法其實很簡單,一起看下去吧!
Thumbnail
本文章想分享給你,我在閱讀有效合成數據的文章後,產生的理解與思考。 首先,本文章有三個有趣的實驗問題: 資料前處理(Data-Preprocession)對合成數據效度的影響。 是否需要對合成的機器學習模型調參(Tuning)。 效度測量是否能預測合成數據訓練的機器學習模型的準確度。
Thumbnail
常建檔完成申報單位基本資料、所得人資料、所得資料等步驟後,就已經完成各類所得申報時所需要的資料,接下來就是將您建檔的資料,轉出成標準的檔案格式操作步驟為A.6 申報資料產生處理
Thumbnail
每個人使用後的數位足跡,都被拿去利用,轉換成利潤分配,難道當事人不會覺得很奇怪或不舒服嗎?還是覺得說無所謂?只要方便就好,至於使用後的數據或個資被整個產業鍊甚至世界拿去利用都沒差?
Thumbnail
在基礎教學完成後,接下來我們就要來學習檔案處理,不論我們今天要分析哪些數據,都需要將數據存取下來並且利用python去讀取出來才能分析,所以這步驟是我們爬蟲的第一步,必須要好好學習唷!!
Thumbnail
<p>腦神經科學的研究認為,人腦天生會去尋找各種意義與連結,在金融領域的技術線圖容易讓人潛意識裡做出趨勢延伸的推論。</p>