2019年1月12日 星期六

[Python學習筆記] python科學計算庫(NumPy)的學習(二):陣列的建立(2)指定資料型態及變更陣列結構(含 np.array、shape、reshape 進階使用方法)

上一篇使用 NumPy 建立陣列的初步學習,今天要學習的是如何在建立陣列時就指定陣列元素的資料型態以及如何將已建立的陣列改變其陣列結構,上次建立陣列時沒有指定陣列元素的資料型態,如下:

>>>import numpy as np
>>>array1=np.array([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15])
>>> array1.dtype
dtype('int32')

由上面範例可知,當陣列元素都是整數時,創建函數會指定元素的資料型態為"int32"

接下來我們也可以手動指定建立陣列的資料型態,如下:

>>>array2=np.array([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],dtype=float)
>>> array2
array([ 1.,  2.,  3.,  4.,  5.,  6.,  7.,  8.,  9., 10., 11., 12., 13.,14., 15.])
>>> array2.dtype
dtype('float64')

由上面範例可知,透過指定資料型態為 "float64"

再來要學的就是如何改變陣列結構

>>> array1.shape
(15,)

由上可知 array1 為一維陣列,陣列長度為15,如何變更陣列結構為 3x5 的二維陣列呢?語法如下:

>>> array1.shape=3,5
>>> array1.shape
(3, 5)
>>> array1
array([[ 1,  2,  3,  4,  5],
       [ 6,  7,  8,  9, 10],
       [11, 12, 13, 14, 15]])

透過修改 shape 屬性,可以變更 array1 的陣列結構。

再來要學的就是 reshape() 函數

剛剛透過修改 shape 屬性可以直接改變陣列結構,那如果要複製給另一變數時順便指定陣列結構,但原本的陣列不能變更,這時就要透過 reshape() 函數,範例如下:

>>>import numpy as np
>>>array3=np.array([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15])
>>>array4=array3.reshape(3,5)
>>>array3.shape
(15,)
>>>array4.shape
(3, 5)
>>> array4
array([[ 1,  2,  3,  4,  5],
       [ 6,  7,  8,  9, 10],
       [11, 12, 13, 14, 15]])

由上面範例透過 reshape() 函數,將 array3 複製給 array4 並且指定陣列結構為 3x5 的二維陣列而 array3 還是維持不變為一維陣列。