分割陣列
NumPy 的 Split 方法能根據指定的條件,將一個陣列分割成數個陣列,這篇教學將會介紹 NumPy 裡分割陣列的做法。
本篇使用的 Python 版本為 3.7.12,所有範例可使用 Google Colab 實作,不用安裝任何軟體 ( 參考:使用 Google Colab )
分割陣列項目的方法
NumPy 有下列幾種分割陣列項目的方法:
方法 | 參數 | 說明 |
---|---|---|
numpy.split()、numpy.array_split() | arr, num | 分割陣列,返回指定數量的新陣列。 |
numpy.hsplit() | arr, num | 水平分割陣列,返回指定數量的新陣列。 |
numpy.vsplit() | arr, num | 垂直分割陣列,返回指定數量的新陣列。 |
numpy.split()、numpy.array_split()
numpy.split()、numpy.array_split() 會分割陣列,返回指定數量的新陣列,第一個參數 arr 為原本的陣列,第二個參數為要分割的數量,也可以設定第三個參數,0 為水平分割 ( 預設 ) 或 1 為垂直分割。
注意,numpy.split 的分割數值必須可以讓原始陣列所整除,不然會發生錯誤。
下方的程式會將原本的陣列,分割成三個新陣列。
import numpy as np
a = np.array([1,2,3,4,5,6])
b = np.array_split(a, 3)
c = np.split(a, 3)
print(b) # [array([1, 2]), array([3, 4]), array([5, 6])]
print(c) # [array([1, 2]), array([3, 4]), array([5, 6])]
下方的程式會將一個二維陣列,按照水平或垂直分割的設定,分割成兩個新陣列 ( 因為數量無法整除,所以不能使用 numpy.split )。
import numpy as np
a = np.array([[1,2],[3,4],[5,6]])
b = np.array_split(a, 2)
c = np.array_split(a, 2, 1)
print(b) # [array([[1, 2],[3, 4]]), array([[5, 6]])]
print(c) # [array([[1],[3],[5]]), array([[2],[4],[6]])]
numpy.hsplit()
numpy.hsplit() 會水平分割陣列,返回指定數量的新陣列 ( 若原本陣列的項目數量,無法整除分割數量,會發生錯誤 )。
import numpy as np
a = np.array([[1,1,1],[2,2,2],[3,3,3]])
b = np.hsplit(a, 3)
print(b) # [array([[1],[2],[3]]), array([[1],[2],[3]]), array([[1],[2],[3]])]
numpy.vsplit()
numpy.vsplit 會垂直分割陣列,返回指定數量的新陣列 ( 若原本陣列的項目數量,無法整除分割數量,會發生錯誤 )。
import numpy as np
a = np.array([[1,1,1],[2,2,2],[3,3,3]])
b = np.vsplit(a, 3)
print(b) # [array([[1, 1, 1]]), array([[2, 2, 2]]), array([[3, 3, 3]])]
意見回饋
如果有任何建議或問題,可傳送「意見表單」給我,謝謝~