
- NumPy 教程
- NumPy - 首頁
- NumPy - 簡介
- NumPy - 環境
- NumPy 陣列
- NumPy - Ndarray 物件
- NumPy - 資料型別
- NumPy 建立和運算元組
- NumPy - 陣列建立例程
- NumPy - 陣列操作
- NumPy - 從現有資料建立陣列
- NumPy - 從數值範圍建立陣列
- NumPy - 迭代陣列
- NumPy - 陣列重塑
- NumPy - 連線陣列
- NumPy - 堆疊陣列
- NumPy - 陣列分割
- NumPy - 展平陣列
- NumPy - 陣列轉置
- NumPy 索引和切片
- NumPy - 索引和切片
- NumPy - 高階索引
- NumPy 陣列屬性和操作
- NumPy - 陣列屬性
- NumPy - 陣列形狀
- NumPy - 陣列大小
- NumPy - 陣列步長
- NumPy - 陣列元素大小
- NumPy - 廣播
- NumPy - 算術運算
- NumPy - 陣列加法
- NumPy - 陣列減法
- NumPy - 陣列乘法
- NumPy - 陣列除法
- NumPy 高階陣列操作
- NumPy - 交換陣列的軸
- NumPy - 位元組交換
- NumPy - 副本和檢視
- NumPy - 元素級陣列比較
- NumPy - 陣列過濾
- NumPy - 連線陣列
- NumPy - 排序、搜尋和計數函式
- NumPy - 搜尋陣列
- NumPy - 陣列的並集
- NumPy - 查詢唯一行
- NumPy - 建立日期時間陣列
- NumPy - 二元運算子
- NumPy - 字串函式
- NumPy - 數學函式
- NumPy - 統計函式
- NumPy - 矩陣庫
- NumPy - 線性代數
- NumPy - Matplotlib
- NumPy - 使用 Matplotlib 繪製直方圖
- NumPy - NumPy 的 I/O
- NumPy 排序和高階操作
- NumPy - 陣列排序
- NumPy - 沿軸排序
- NumPy - 使用花式索引排序
- NumPy - 結構化陣列
- NumPy - 建立結構化陣列
- NumPy - 操作結構化陣列
- NumPy - 欄位訪問
- NumPy - 記錄陣列
- Numpy - 載入陣列
- Numpy - 儲存陣列
- NumPy - 將值追加到陣列
- NumPy - 交換陣列的列
- NumPy - 向陣列插入軸
- NumPy 處理缺失資料
- NumPy - 處理缺失資料
- NumPy - 識別缺失值
- NumPy - 刪除缺失資料
- NumPy - 填充缺失資料
- NumPy 效能最佳化
- NumPy - 使用陣列進行效能最佳化
- NumPy - 使用陣列進行向量化
- NumPy - 陣列的記憶體佈局
- Numpy 線性代數
- NumPy - 線性代數
- NumPy - 矩陣庫
- NumPy - 矩陣加法
- NumPy - 矩陣減法
- NumPy - 矩陣乘法
- NumPy - 元素級矩陣運算
- NumPy - 點積
- NumPy - 矩陣求逆
- NumPy - 行列式計算
- NumPy - 特徵值
- NumPy - 特徵向量
- NumPy - 奇異值分解
- NumPy - 求解線性方程組
- NumPy - 矩陣範數
- NumPy 元素級矩陣運算
- NumPy - 求和
- NumPy - 平均值
- NumPy - 中位數
- NumPy - 最小值
- NumPy - 最大值
- NumPy 集合運算
- NumPy - 唯一元素
- NumPy - 交集
- NumPy - 並集
- NumPy - 差集
- NumPy 有用資源
- NumPy 編譯器
- NumPy - 快速指南
- NumPy - 有用資源
- NumPy - 討論
NumPy - 陣列分割
分割 NumPy 陣列
在 NumPy 中分割陣列是將單個數組分成多個子陣列的一種方法。這可以沿任何軸進行,具體取決於您希望如何劃分資料。NumPy 提供了多種函式以不同的方式分割陣列。如下所示 -
- 使用 numpy.split() 函式
- 使用 numpy.array_split() 函式
- 使用 numpy.hsplit() 函式
- 使用 numpy.vsplit() 函式
- 使用 numpy.dsplit() 函式
使用 split() 函式分割陣列
我們可以在 NumPy 中使用 split() 函式將陣列沿指定軸分割成多個子陣列。陣列根據提供的索引進行劃分。以下是語法 -
numpy.split(array, indices_or_sections, axis=0)
其中,
array − 要分割的輸入陣列。
indices_or_sections − 這可以是整數或排序整數的一維陣列。
如果為整數,則指定要建立的等大小子陣列的數量。陣列必須能被此數量的段均勻地整除。
如果為排序整數的一維陣列,則指定分割陣列的點。
axis − 要沿其分割陣列的軸。預設為 0(對於二維陣列,沿行分割)。
示例:分割成等大小的子陣列
在下面的示例中,我們使用 numpy.split() 函式沿列(axis=1)將陣列“arr”分割成 3 個相等的子陣列 -
import numpy as np # array arr = np.arange(9).reshape(3, 3) # Split into 3 equal sub-arrays split_arr = np.split(arr, 3, axis=1) print("Original Array:") print(arr) print("\nSplit into 3 equal sub-arrays along axis 1:") for sub_arr in split_arr: print(sub_arr)
獲得的輸出如下 -
Original Array: [[0 1 2] [3 4 5] [6 7 8]] Split into 3 equal sub-arrays along axis 1: [[0] [3] [6]] [[1] [4] [7]] [[2] [5] [8]]
示例:在特定索引處分割
在這裡,我們使用 NumPy 中的 split() 函式沿行(axis=0)在索引 [1, 2] 處分割陣列 -
import numpy as np # array arr = np.arange(9).reshape(3, 3) # Split array at specified indices split_arr = np.split(arr, [1, 2], axis=0) print("\nSplit at indices [1, 2] along axis 0:") for sub_arr in split_arr: print(sub_arr)
這將產生以下結果 -
Split at indices [1, 2] along axis 0: [[0 1 2]] [[3 4 5]] [[6 7 8]]
使用 array_split() 函式分割陣列
我們也可以使用 NumPy 中的 array_split() 函式將陣列沿指定軸分割成多個子陣列。與 numpy.split() 函式不同,array_split() 函式允許不等分割,如果陣列不能被均勻地分割。
當陣列不能被指定數量的段均勻地整除時,numpy.array_split() 函式確保生成的子陣列的大小盡可能相等,並將任何額外的元素分配到前面的子陣列。以下是語法 -
numpy.array_split(array, indices_or_sections, axis=0)
其中,
array − 要分割的輸入陣列。
indices_or_sections − 這可以是整數或排序整數的一維陣列。
如果為整數,則指定要建立的等大小子陣列的數量。陣列必須儘可能地被均勻地分割。
如果為排序整數的一維陣列,則指定分割陣列的點。
axis − 要沿其分割陣列的軸。預設為 0(對於二維陣列,沿行分割)。
示例
在下面的示例中,我們使用 numpy.array_split() 函式將具有“10”個元素的一維陣列分割成 3 個不相等的子陣列 -
import numpy as np # array arr = np.arange(10) # Split into 3 sub-arrays along axis 0 split_arr = np.array_split(arr, 3) print("Original Array:") print(arr) print("\nSplit into 3 unequal sub-arrays:") for sub_arr in split_arr: print(sub_arr)
以上程式碼的輸出如下 -
Original Array: [0 1 2 3 4 5 6 7 8 9] Split into 3 unequal sub-arrays: [0 1 2 3] [4 5 6] [7 8 9]
水平分割
我們可以使用 NumPy 中的 hsplit() 函式沿水平軸(即對於二維陣列,axis = 1)分割陣列。此函式沿水平方向將陣列分成子陣列,有效地分離資料列。以下是語法 -
numpy.hsplit(array, indices_or_sections)
其中,
array − 要分割的輸入陣列。
indices_or_sections − 指示如何分割陣列的整數或一維索引陣列。
示例
在此示例中,我們使用 numpy.hsplit() 函式沿其列將二維陣列“arr”分割成 2 個相等的部分 -
import numpy as np # 2D array arr = np.array([[1, 2, 3, 4], [5, 6, 7, 8]]) # Split into 2 equal parts along axis 1 split_arr = np.hsplit(arr, 2) print("Original Array:") print(arr) print("\nSplit into 2 equal parts along axis 1:") for sub_arr in split_arr: print(sub_arr)
執行以上程式碼後,我們得到以下輸出 -
Original Array:[[1 2 3 4] [5 6 7 8]] Split into 2 equal parts along axis 1: [[1 2] [5 6]] [[3 4] [7 8]]
垂直分割
我們也可以使用 NumPy 中的 vsplit() 函式沿垂直軸(即對於二維陣列,axis = 0)分割陣列。此函式沿垂直方向將陣列分成子陣列,有效地分離資料行。以下是語法 -
numpy.vsplit(array, indices_or_sections)
其中,
array − 要分割的輸入陣列。
indices_or_sections − 指示如何分割陣列的整數或一維索引陣列。
示例
在下面的示例中,我們使用 numpy.vsplit() 函式沿其行將二維陣列“arr”分割成 3 個相等的部分 -
import numpy as np # 2D array arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) # Split into 3 equal parts along axis 0 split_arr = np.vsplit(arr, 3) print("Original Array:") print(arr) print("\nSplit into 3 equal parts along axis 0:") for sub_arr in split_arr: print(sub_arr)
獲得的輸出如下所示 -
Original Array: [[1 2 3] [4 5 6] [7 8 9]] Split into 3 equal parts along axis 0: [[1 2 3]] [[4 5 6]] [[7 8 9]]
深度分割
numpy.dsplit() 函式用於沿其第三維分割三維陣列。此維度通常稱為深度維度,對應於 axis=2。以下是語法 -
numpy.dsplit(array, indices_or_sections)
示例
在此示例中,使用 numpy.dsplit() 函式沿其第三維將三維陣列“arr”分割成四個相等的部分 -
import numpy as np # Example 3D array arr = np.arange(24).reshape((2, 3, 4)) # Split into 4 equal parts along axis 2 (depth) split_arr = np.dsplit(arr, 4) print("Original Array:") print(arr) print("\nSplit into 4 equal parts along axis 2 (depth):") for sub_arr in split_arr: print(sub_arr) print()
產生的結果如下 -
Original Array: [[[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11]] [[12 13 14 15] [16 17 18 19] [20 21 22 23]]] Split into 4 equal parts along axis 2 (depth): [[[ 0] [ 4] [ 8]] [[12] [16] [20]]] [[[ 1] [ 5] [ 9]] [[13] [17] [21]]] [[[ 2] [ 6] [10]] [[14] [18] [22]]] [[[ 3] [ 7] [11]] [[15] [19] [23]]]