Hello NumPy!

學習及利用NumPy函式庫的強大功能,理解相關的基礎應用

Steven Lo
Python4U
18 min readMay 15, 2018

--

文章搬新家囉!
全新內容歡迎參考 「
Hello NumPy!|NumPy 入門詳細介紹 (2023更新版)Python for Beginners 系列文章」,未來最新文章也將移至 Here
想了解 AI 、機器學習及深度學習的基礎概念,【從 AI 到 生成式 AI:40 個零程式的實作體驗,培養新世代人工智慧素養】,將帶領讀者在不會程式、不會數學也OK!的情況下,建立最完整的 AI 入門知識。
歡迎海、內外讀者持續追蹤及關注我們的文章~~

Photo by Goran Ivos on Unsplash

本系列文章希望能讓有興趣學習資料科學(Data Science)及Python程式語言的人,透過全新不同的方式,由淺入深獲得相關知識,除了前一篇的Python初體驗文章,這一篇將帶領大家了解未來進入資訊科學領域前,如何利用NumPy函式庫的強大功能,理解相關的基礎應用。

NumPy Introduction

NumPy是Python在進行科學運算時,一個非常基礎的Package,同時也是非常核心的library,它具有下列幾個重要特色:

  • 提供非常高效能的多維陣列(multi-dimensional array)數學函式庫
  • 可整合C/C++及Fortran的程式碼
  • 方便有用的線性代數(Linear Algebra)及傅立葉轉換(Fourier Transform)能力
  • 利用NumPy Array替代Python List
  • 可定義任意的數據型態(Data Type),使得能輕易及無縫的與多種資料庫整合

在邁向資料科學(Data Science)、機器學習(Machine Learning)、深度學習(Deep Learning)及人工智慧(Artificial Intelligence)的路上, Python還有許許多多有趣好玩的套件(例如:Pandas、SciPy、Sympy、Matplotlib、Scikit-learn 等),這些與資料科學相關的重要套件幾乎都是架構在 Numpy基礎上做應用,因此學會NumPy對後續的學習及理解將會有很大的幫助。

NumPy Fundamentals

在介紹NumPy基礎操作前,必須先進行import NumPy的動作,才能使用其函式庫內的相關功能,大家可以在Python IDLE中的Shell環境中試著輸入下方式子:

接下來我們將依序對一些基本及重要的功能逐一介紹。

1.NumPy Array

學習資料科學(Data Science)或機器學習(Machine Learning)時,利用NumPy在陣列的操作是非常重要,其主要功能都架構在多重維度(N-dimensional array)的 ndarray上,ndarray是一個可以裝載相同類型資料的多維容器,維度的大小及資料類型分別由shape及dtype來定義。通常我們會稱一維陣列為向量(vector),二維陣列為矩陣(matrix),未來在機器學習系列文章中會再仔細介紹此一部分。而一維陣列到多維陣列的各軸向(axis)可參考下圖,對於後續學習幫助很大。

[caption id=”attachment_17" align=”alignnone” width=”1698"]

陣列維度(Dimension)及軸向(axis)[/caption]

  • 建立陣列及初始值

我們會先import numpy 模組,透過傳入Python的list或tuple到 numpy.array() 建立陣列。

下面幾種方式除了可以建立陣列外,也可以同時給予初始值

2.I/O

3.Data Types

NumPy支援比Python更多的數字類型。可參考下圖。

[caption id=”attachment_19" align=”alignnone” width=”866"]

NumPy Data Type (圖片來源:scipy.org)[/caption]

其中有5種基本數字類型比較常用,分別是booleans (bool), integers (int), unsigned integers (uint), floating point (float)和complex。

4.Inspecting Your Array

5.Asking For Help

6.Array Mathematics

  • Arithmetic Operations
  • Comparison

NumPy也提供Array幾種比較方式如下:

  • Aggregate Functions

利用numpy的聚合函數(Aggregate Functions)於統計領域是很方便的,常見聚合函數有最大值(max)、最小值(min)、中位數( median)、平均數(mean)、方差、標準差(std)、在numpy的使用上是很常見的。

7.Copying & Sorting Arrays

numpy同時提供多種陣列間的copying及sorting功能,我們就先簡介其中幾種做法。

8.Subsetting, Slicing, Indexing

藉由下列範例你將會清楚了解Subsetting, Slicing及Indexing的應用。我們先試著各建立一個一維陣列(1D array)及二維陣列(2D array)如下:

  • Subsetting
  • Slicing
  • Boolean Indexing
  • Fancy Indexing

9.Array Manipulation

  • Transposing Array
  • Changing Array Shape
  • Adding/Removing Elements
  • Combining Arrays

利用NumPy將array間做彼此合併或連結的方法很多,這裡先簡單介紹一些常用的方式。

  • vstack:垂直方向合併
  • hstack:水平方向合併
  • concatenate (axis = 0):沿垂直方向合併
  • concatenate (axis = 1):沿水平方向合併
  • Splitting Arrays

跟Combining Arrays一樣,NumPy提供一些在不同軸向的切割方式,如下說明:

  • vsplit:垂直方向分割
  • hsplit:水平方向分割

後續會再分享 NumPy 相關文章給有興趣的初學者。

讀者若想要多了解一些 Python 的基本程式語法,可以參考 Python for Beginners 系列文章,裡面有大量範例及 Quiz 練習。若是想要了解一些 AI 、機器學習及深度學習的基礎概念,可以參考這一本書【從 AI 到 生成式 AI:40 個零程式的實作體驗,培養新世代人工智慧素養】,它將帶領讀者在不會程式、不會數學也OK!的情況下,建立最完整的 AI 入門知識。

如果你喜歡這篇文章歡迎分享追蹤,持續關注最新文章。

By Steven Lo (IG:@kwangchih)

--

--