HOWTO · NumPy

壓縮 NumPy 陣列

在 Python 中,可以使用三種主要方法將兩個一維 NumPy 陣列壓縮為單個二維 NumPy 陣列,即 list(zip()) 方法、numpy.stack() 函式和 numpy.column_stack() 函式。

本頁內容

本教程將介紹在 Python 中將兩個 1D NumPy 陣列壓縮為單個 2D NumPy 陣列的方法。

帶有 list(zip()) 函式的 NumPy Zip

如果我們有兩個一維陣列並且想將它們壓縮到一個二維陣列中,我們可以使用 Python 中的 list(zip()) 函式。這種方法涉及將陣列壓縮到一個列表中。list(zip(a,b)) 函式將陣列 a 和 b 作為引數並返回一個列表。然後我們可以使用 numpy.array() 函式將壓縮列表轉換為陣列。請參考以下程式碼示例。

import numpy as np

a = np.array([1, 3, 5, 7])
b = np.array([2, 4, 6, 8])

c = np.array(list(zip(a, b)))

print(c)

輸出:

[[1 2]
 [3 4]
 [5 6]
 [7 8]]

我們首先使用 np.array() 函式建立了兩個一維陣列 a 和 b,並使用 np.array(list(zip(a,b))) 函式將它們壓縮在一起。

這種方法效率不高,因為我們必須在陣列和列表之間進行轉換。

使用 numpy.stack() 函式的 NumPy Zip

我們還可以使用 numpy.stack() 函式來實現與前一個示例相同的目標。這種方法比以前的方法更有效,因為沒有執行型別轉換。numpy.stack() 函式 用於根據指定的軸連線兩個或多個陣列。我們可以指定 axis 引數等於 1 以獲得與前一個示例類似的結果。請參考以下程式碼示例。

import numpy as np

a = np.array([1, 2, 3, 4, 5])
b = np.array([6, 7, 8, 9, 10])

c = np.stack((a, b), axis=1)

print(c)

輸出:

[[1 2]
 [3 4]
 [5 6]
 [7 8]]

我們首先使用 np.array() 函式建立了兩個一維陣列 a 和 b,並使用 np.stack((a,b), axis=1) 函式將它們壓縮在一起。

使用 numpy.column_stack() 函式的 NumPy Zip

numpy.column_stack() 函式是另一種方法,可用於在 Python 中將兩個一維陣列壓縮為單個二維陣列。numpy.column_stack() 函式用於將兩個或多個一維陣列作為列連線到單個二維陣列中。我們不必為此方法指定任何軸引數。請參考以下程式碼示例。

import numpy as np

a = np.array([1, 3, 5, 7])
b = np.array([2, 4, 6, 8])

d = np.column_stack((a, b))

print(d)

輸出:

[[1 2]
 [3 4]
 [5 6]
 [7 8]]

我們首先使用 np.array() 函式建立了兩個一維陣列 a 和 b,並使用 np.column_stack(a,b) 函式將它們壓縮在一起。

與前兩種方法相比,這種方法是最好的。因為沒有型別轉換,我們不必在這種方法中指定任何軸。