壓縮 NumPy 陣列

Muhammad Maisam Abbas 2023年1月30日 2021年7月4日
  1. 帶有 list(zip()) 函式的 NumPy Zip
  2. 使用 numpy.stack() 函式的 NumPy Zip
  3. 使用 numpy.column_stack() 函式的 NumPy Zip
壓縮 NumPy 陣列

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

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

如果我們有兩個一維陣列並且想將它們壓縮到一個二維陣列中,我們可以使用 Python 中的 list(zip()) 函式。這種方法涉及將陣列壓縮到一個列表中。list(zip(a,b)) 函式將陣列 ab 作為引數並返回一個列表。然後我們可以使用 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() 函式建立了兩個一維陣列 ab,並使用 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() 函式建立了兩個一維陣列 ab,並使用 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() 函式建立了兩個一維陣列 ab,並使用 np.column_stack(a,b) 函式將它們壓縮在一起。

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

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn