學習了解 Python Numpy 資料科學的觀念與運用
Numpy 是 Python 資料科學計算模組,主要用於資料處理上
同時,在 Python 許多常聽到的資料科學計算模組(Pandas、Scikit-learn等),都需要用到 Numpy 模組內的一部分功能,幾乎是使用 Numpy 當做基礎開發出來的
Numpy 使用多維陣列 ndarray 來取代 Python 的串列資料,是個可以裝載相同類型資料的多維容器
陣列 | 說明 |
---|---|
一維陣列 | 向量(Vector) |
二維陣列 | 矩陣(matrix) |
多維陣列 | 使用多個矩陣(matrix)各軸向(axis)組合起來的形狀(shape) |
讀取方式,橫(左右)的為列 row,直(上下)的為欄 column(col)
一維陣列 | 1D array | 向量(Vector) |
---|---|---|
1 | 2 | 3 |
因一維陣列只有一軸向,因此只有 col 的數量,所以形狀 shape(3)
二維陣列 | 2D array | 矩陣(matrix) |
---|---|---|
1 | 2 | 3 |
4 | 5 | 6 |
二維陣列有 row 跟 col 二軸向,軸向看法:先看 row,再看 col(上述有2個 row,3個 col),因此形狀是 shape(2,3)
多維陣列,是以多個 row 跟 col 形成的矩陣組合起來
以三維來說,有3個矩陣,2個 row,3個 col,軸向看法:先看矩陣數量,再看 row,最後看 col,因此形狀是 shape(3,2,3)
import numpy as np
可以將串列元組資料型態,轉換為 ndarray 資料型態,語法為:
numpy.array(object, [其餘參數])
dtype = None, order = None, subok = False, ndmin = 0
array參數 | 說明 |
---|---|
object | 串列或元組資料 |
dtype | 陣列的資料型態 |
(還有其他參數,此篇僅說到將使用到的,若感興趣可自行查詢學習) |
實際體驗
import numpy as np
v1 = np.array((1, 2, 3, 4, 5)) # 使用 list 資料型態
v2 = np.array([1.1, 2.2, 3.3, 4.4, 5.5]) # 使用 tuple 資料型態
print(v1)
print("v1 type:%s"%(type(v1))) # 印出 v1 資料型態
print(v2)
print("v2 type:%s"%(type(v2))) # 印出 v2 資料型態
若是要查詢指定的 ndarry 資料的話,僅需使用「ndarray.dtype」即可
若是要設定 ndarry 資料型態的話,僅需要在建立陣列時將 dtype 參數加入,並指定資料型態即可
實際體驗
import numpy as np
v1 = np.array((1, 2, 3, 4, 5))
v2 = np.array([1.1, 2.2, 3.3, 4.4, 5.5])
v3 = np.array([1.1, 2.2, 3.3, 4.4, 5.5], dtype=int) # 轉換資料型態為 int
print("v1.dtype:%s"%(v1.dtype)) # 印出 v1 資料型態
print("v2.dtype:%s"%(v2.dtype)) # 印出 v2 資料型態
print("v2:%s"%(v2)) # 印出 v2 資料內容
print("v3:%s"%(v3)) # 印出 v3 資料內容
print("v3.dtype:%s"%(v3.dtype)) # 印出 v3 資料型態
arange 其實跟 range 有點相似,可以建立等距的整數數列
其語法必要的參數是終止值,而若要使用間隔值,則還需要設定起始值:
(若只有終止值,沒有起始值的話,起始值會以 0 開始)
numpy.arange([起始值], 終止值, [間隔值])
實際體驗
印出範圍 1~20,值與值之間需要相間隔 3
import numpy as np
arangeValue = np.arange(1, 20, 3)
print(arangeValue)
numpy.zeros((陣列各維度用逗號區隔))
實際體驗
import numpy as np
zeroValue = np.zeros((3))
print(zeroValue)
zeroValue2 = np.zeros((3, 5))
print(zeroValue2)
numpy.ones((陣列各維度用逗號區隔))
實際體驗
import numpy as np
oneValue = np.ones((3))
print(oneValue)
oneValue2 = np.ones((3, 5))
print(oneValue2)
只要給予陣列的區間「起始值, 終止值」,就可以要求在這個區間內產生幾個元素,語法為:
numpy.linspace(起始值, 終止值, 元素個數)
實際體驗
import numpy as np
linspaceValue = np.linspace(1, 10, 3)
print(linspaceValue)
將透過給予的形狀,建立隨機值的陣列
numpy.empty((陣列各維度用逗號區隔))
實際體驗
import numpy as np
emptyValue = np.empty((2))
print(emptyValue)
ndarray 物件 | 說明 |
---|---|
ndarray.ndim | ndarray 物件的維度 |
ndarry.shape | ndarry 物件的每一個維度的大小 |
ndarry.size | ndarry 物件所組成之 array 的總元素數量,回應之數值會等於 ndarray.shape 的每個元素相乘 |
import numpy as np
list_data =[
[[1, 3],
[2, 6]],
[[1, 3],
[2, 6]],
[[1, 3],
[2, 6]]
]
numpyArray = np.array(list_data)
print("維度:", numpyArray.ndim)
print("形狀:", numpyArray.shape)
print("數量:", numpyArray.size)
若是想接觸 Python 資料科學的領域的話,Numpy 真的需要熟悉運用
將在下篇說明 Numpy 的其餘運用方式