
- 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 提供了兩個函式,ndarray.flatten() 和 ndarray.ravel(),兩者都用於扁平化陣列。
使用 flatten() 函式扁平化陣列
NumPy 中的 flatten() 函式用於將多維陣列轉換為一維陣列,也稱為扁平化。
它返回一個新陣列,該陣列包含原始陣列中的所有元素,以單行主序(C 樣式)序列排列。以下是語法:
arr.flatten(order='C')
其中,order 是一個可選引數,用於指定元素的順序。預設為 'C',表示行主序。
示例
在下面的示例中,我們使用 NumPy 中的 flatten() 函式將陣列“arr”扁平化為單行主序:
import numpy as np # array arr = np.array([[1, 2, 3], [4, 5, 6]]) # Flattening the array flattened_arr = arr.flatten() print("Original Array:") print(arr) print("\nFlattened Array:", flattened_arr)
獲得的輸出如下:
Original Array: [[1 2 3] [4 5 6]] Flattened Array: [1 2 3 4 5 6]
使用 ravel() 函式扁平化陣列
NumPy 中的 ravel() 函式用於從多維陣列建立一個扁平化的 1D 陣列。與 flatten() 函式不同,ravel() 函式在可能的情況下返回原始陣列的扁平化檢視,而不會建立副本。以下是語法:
arr.ravel(order='C')
示例
在下面的示例中,我們使用 ravel() 函式將一個 2D 陣列扁平化為一個 1D 陣列:
import numpy as np # array arr = np.array([[1, 2, 3], [4, 5, 6]]) # Flattening the array raveled_arr = arr.ravel() print("Original Array:") print(arr) print("\nRaveled Array:", raveled_arr)
上述程式碼的輸出如下:
Original Array: [[1 2 3] [4 5 6]] Raveled Array:[1 2 3 4 5 6]
Fortran 順序扁平化陣列
當您以 Fortran 順序扁平化多維陣列時,您將其轉換為一維陣列,其中元素排列方式就像您逐列讀取陣列一樣。
例如,如果您有一個維度為 (行, 列) 的 2D 陣列 A,則以 Fortran 順序扁平化它會將元素排列成這樣:您遍歷第一列的所有元素,然後移動到第二列,依此類推。
在 NumPy 中,您可以透過在 flatten() 函式中將 order 引數設定為 F 來以 Fortran 順序扁平化陣列。
示例
在這個例子中,我們使用 NumPy 中的 array.flatten() 函式以 Fortran 順序扁平化陣列“arr”:
import numpy as np # array arr = np.array([[1, 2, 3], [4, 5, 6]]) # Flatten in Fortran order flattened_arr_fortran = arr.flatten(order='F') print("Original Array:") print(arr) print("\nFlattened Array (Fortran order):",flattened_arr_fortran)
執行上述程式碼後,我們將得到以下輸出:
Original Array: [[1 2 3] [4 5 6]] Flattened Array (Fortran order):[1 4 2 5 3 6]
連線扁平化陣列
在 NumPy 中,您可以使用 numpy.concatenate() 函式連線扁平化陣列。以下是逐步操作方法:
扁平化陣列 - 首先,您需要使用 flatten() 函式扁平化要連線的每個陣列。這會將每個多維陣列轉換為一維陣列。
連線 - 然後,使用 numpy.concatenate() 函式將扁平化的陣列連線成一個數組。
連線是將多個數組組合成一個更大陣列的過程。當您連線扁平化陣列時,您主要是在一個接一個地追加每個扁平化陣列的元素,以建立一個更長的單個數組。
示例
在下面的示例中,我們首先使用 array.flatten() 函式扁平化 2D 陣列“arr1”和“arr2”。然後,我們使用 NumPy 中的 concatenate() 函式連線這些扁平化陣列:
import numpy as np # arrays arr1 = np.array([[1, 2], [3, 4]]) arr2 = np.array([[5, 6], [7, 8]]) # Flatten arrays flat_arr1 = arr1.flatten() flat_arr2 = arr2.flatten() # Concatenate flattened arrays concatenated_arr = np.concatenate((flat_arr1, flat_arr2)) print("Flattened Array 1:") print(flat_arr1) print("\nFlattened Array 2:") print(flat_arr2) print("\nConcatenated Flattened Array:",concatenated_arr)
獲得的輸出如下所示:
Flattened Array 1: [1 2 3 4] Flattened Array 2: [5 6 7 8] Concatenated Flattened Array:[1 2 3 4 5 6 7 8]
用零初始化扁平化陣列
用零初始化扁平化陣列是一種建立一維陣列的方法,其中所有元素都設定為零。
NumPy 提供了一個函式 numpy.zeros_like(),用於建立一個與給定陣列具有相同形狀和型別的零陣列。以下是語法:
numpy.zeros_like(a, dtype=None, order='K', subok=True, shape=None)
其中,
a - 輸入陣列。
dtype (可選) - 指定輸出陣列的資料型別。如果未提供,則使用 a 的資料型別。
order (可選) - 指定結果的記憶體佈局順序('C' 表示行主序,'F' 表示列主序,'A' 表示任意,'K' 表示保持,預設為 'C')。
subok (可選) - 如果為 True,則子類將被傳遞,否則,返回的陣列將強制為基類陣列(預設為 False)。
shape (可選) - 輸出陣列的形狀。如果沒有給出,則預設為 a.shape。
示例
在這個例子中,我們建立了一個用特定值初始化的 2D NumPy 陣列“arr”。然後我們將“arr”扁平化為一個 1D 陣列,並用零初始化“flattened_zeros”:
import numpy as np # Initializing a 2D array arr = np.array([[1, 2], [3, 4]]) # Flattening and initializing with zeros flattened_zeros = np.zeros_like(arr.flatten()) print("Original Array:") print(arr) print("\nFlattened Array with Zeros:",flattened_zeros)
產生的結果如下:
Original Array: [[1 2] [3 4]] Flattened Array with Zeros: [0 0 0 0]
查詢扁平化陣列中的最大值
查詢扁平化陣列中的最大值意味著確定多維陣列的一維表示中最大的元素。
在 NumPy 中,您可以使用 numpy.max() 函式查詢陣列中的最大值。當應用於扁平化陣列時,此函式返回該陣列中存在的最高值。以下是語法:
numpy.max(a, axis=None, out=None, keepdims=False, initial=None, where=True)
其中,
a - 要計算最大值的輸入陣列。
axis (可選) - 指定要操作的軸。預設為 "None",返回扁平化陣列的最大值。
out (可選) - 結果儲存的輸出陣列。如果提供,則其形狀和緩衝區長度必須與預期的輸出相同。
示例
在下面的示例中,我們使用 numpy.max() 函式查詢扁平化陣列中的最大值:
import numpy as np # array arr = np.array([[1, 2], [3, 4]]) # Flatten array flattened_arr = arr.flatten() # Find maximum value max_value = np.max(flattened_arr) print("Original Array:") print(arr) print("\nFlattened Array:") print(flattened_arr) print("\nMaximum Value in Flattened Array:",max_value)
我們得到如下所示的輸出:
Original Array: [[1 2] [3 4]] Flattened Array: [1 2 3 4] Maximum Value in Flattened Array:4