NumPy 1.14 教學 – #01 基礎, 建立陣列的方法

開始學NumPy之前至少先熟悉Python基礎使用方法,這樣再來看NumPy才不會那麼吃力!
Python3 教學、筆記

本文將介紹NumPy的陣列和Python的陣列不同之處、以及建立陣列或矩陣的方法以及基本操作。

本內容的的練習範例同步放置於GitHub:Learn NumPy – GitHub
各位可以直接去下載來玩看看,體會與Python之間的差異能加速了解NumPy的操作!

基礎

NumPy中的陣列和Python內建的陣列有什麼不同呢?
NumPy的array是NumPy中名為ndarray的Class所定義的,而這個array當然支援多維度陣列,也可以說它是一個支援矩陣(Martix)的類別!然而,Python的array則是標準函式庫內建的類別,叫做array.array。而Python的array能支援單維度(1維)的陣列,而且提供的功能選項也比NumPy來得少!

 

匯入(import) NumPy

 

建立一個陣列,並給予一些初始值!
這邊分別以兩種型別(整數、浮點數)的數值來做範例,整數、浮點數分別為a和b。
ndarray.dtype:該陣列型別的屬性

Output

 

重要屬性

ndarray.ndim:NumPy ndarray物件的維度
ndarry.shape:ndarry物件的每一個維度的大小(size),回傳資料類別為Tuple
ndarry.size:ndarry物件所組成之array的總元素數量,回應之數值會等於ndarray.shape的每個元素相乘
ndarry.dtype:ndarray物件內組成元素的型態
ndarray.itemsize:陣列中每一個元素的大小(Bytes) (ex: int16=>16/8=2 Bytes)
ndarry.data:這是一個存有實際陣列元素的緩衝,通常我們不需要使用這個屬性,因為我們可以使用index存取這些元素。

Output

 

建立陣列的方法

1維陣列

np.array( [<陣列元素用逗號隔開>] ):簡易一維陣列
np.arange( 起始值, 結束值, 步幅, 資料型別 ):也是產生一維陣列,和np.array()的差別在於arange擁有較大的彈性,而且元素數值是自動化產生!

Output

 

2維陣列

np.array( [[<Row1陣列元素>], [<Row2陣列元素>]] ):產生簡易二維陣列

Output

 

指定陣列型別
np.array( [[<Row1陣列元素>], [<Row2陣列元素>]], dtype=np.int16 ):產生型別為int的陣列

Output

 

複數陣列(Complex)

很簡單,就是把陣列元素用複數表示法指定就好了:實部+虛部j
或者是用dtype=complex指定陣列元素為複數!

Output

 

建立陣列常用函數

Zeros

np.zeros( (陣列各維度大小用逗號區分) ):建立全為0的陣列,可以小括號定義陣列的各個維度的大小!

Output

 

Ones

np.ones( (陣列各維度大小用逗號區分) ):用法與np.zeros一樣!

Output

 

Empty

贊助廣告

np.empty( (陣列各維度大小用逗號區分) ):用法與np.zeros一樣,但唯一的差別是NumPy不會初始化陣列內元素的初始值,所以內容將會是不確定的。

Output

 

Arange

np.arange( 起始值, 結束值, 步幅, 資料型別 ):也是產生一維陣列,和np.array()的差別在於arange擁有較大的彈性,而且元素數值是自動化產生!步幅決定每隔多少數值產生一個元素(等差的概念)

Output

 

Linspace

np.linspace( 起始值, 結束值, 起始與結束的區間內要產生幾個元素 ):這個在畫線時還蠻常用到的!只要給定陣列的區間(起始值、結束值),就可以要求在這個區間內產生幾個元素!

Output

 

 

Andy Wang

站在巨人的肩膀上仍須戰戰兢兢!

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料