如何連線兩個二維NumPy陣列?


Python 是一種用途廣泛且功能強大的程式語言,廣泛應用於科學計算、資料分析和機器學習。NumPy 是 Python 在這些領域如此有用的關鍵庫之一。NumPy 提供了強大的陣列處理工具,這對於許多科學計算任務至關重要。在本文中,我們將探討如何使用 Python 連線兩個二維 NumPy 陣列。

如果您曾經在 Python 中使用過陣列,您就會知道它們對於儲存和處理大量資料非常有用。但是,您可能需要將兩個陣列組合成一個更大的陣列。這就是陣列連線的用武之地。在本教程中,我們將向您展示如何使用兩種不同的方法在 Python 中連線兩個二維 NumPy 陣列。讓我們開始吧!

如何連線兩個二維 NumPy 陣列?

連線是將兩個或多個字串、陣列或其他資料結構組合成單個實體的過程。它涉及將兩個或多個字串或陣列的內容連線在一起以建立一個新的字串或陣列。

有多種方法可以連線兩個二維 NumPy 陣列。讓我們逐一深入瞭解。

方法一:使用 np.concatenate()

np.concatenate() 函式將其第一個引數作為陣列序列,該序列可以是元組、列表或任何包含要連線的陣列的可迭代物件。我們還可以指定要沿其連線陣列的軸,可以是 0(用於垂直連線)或 1(用於水平連線)。

示例

以下是如何使用 np.concatenate() 水平連線兩個二維 NumPy 陣列的示例

import numpy as np

# create two 2D arrays
arr1 = np.array([[1, 2], [3, 4]])
arr2 = np.array([[5, 6], [7, 8]])

# concatenate horizontally
arr3 = np.concatenate((arr1, arr2), axis=1)

# print the concatenated array
print(arr3)

輸出

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

在上面的示例中,我們首先使用 np.array() 函式建立兩個二維陣列 arr1 和 arr2。然後,我們使用 np.concatenate() 水平地沿第二個軸 (axis=1) 連線這些陣列。生成的連線陣列 arr3 包含來自 arr1 和 arr2 的所有元素,這些元素按水平排列。請注意,我們指定了 axis=1 以水平連線陣列,並且生成的連線陣列的行數與輸入陣列相同。

示例

我們還可以透過指定 axis=0 來使用 np.concatenate() 垂直連線兩個二維 NumPy 陣列。這是一個示例

import numpy as np

# create two 2D arrays
arr1 = np.array([[1, 2], [3, 4]])
arr2 = np.array([[5, 6], [7, 8]])

# concatenate vertically
arr3 = np.concatenate((arr1, arr2), axis=0)

# print the concatenated array
print(arr3)

輸出

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

在上面的程式碼示例中,我們再次使用 np.array() 函式建立了兩個二維陣列 arr1 和 arr2,然後使用 np.concatenate() 沿第一個軸 (axis=0) 垂直連線這些陣列。生成的連線陣列 arr3 包含來自 arr1 和 arr2 的所有元素,這些元素按垂直排列。請注意,我們指定了 axis=0 以垂直連線陣列,並且生成的連線陣列的列數與輸入陣列相同。

方法二:使用 np.vstack() 和 np.hstack()

除了 np.concatenate() 函式外,NumPy 還提供了另外兩個可用於連線二維陣列的函式:np.vstack() 和 np.hstack()。這些函式分別專門用於垂直和水平連線。

np.vstack():此函式可用於垂直堆疊兩個二維陣列。它將陣列元組作為輸入,並返回一個包含垂直堆疊的輸入陣列的新陣列。生成的陣列的形狀為 (m+n, k),其中 m 和 n 是輸入陣列中的行數,k 是列數。

示例

這是一個使用 np.vstack() 方法連線兩個二維陣列的示例

import numpy as np

# Creating two 2-dimensional arrays
array1 = np.array([[1, 2], [3, 4]])
array2 = np.array([[5, 6], [7, 8]])

# Stacking the two arrays vertically
result = np.vstack((array1, array2))

print("Array 1:")
print(array1)

print("\nArray 2:")
print(array2)

print("\nResult after vertical concatenation:")
print(result)

輸出

Array 1:
[[1 2]
 [3 4]]

Array 2:
[[5 6]
 [7 8]]

Result after vertical concatenation:
[[1 2]
 [3 4]
 [5 6]
 [7 8]]

如您在上面看到的,生成的連線陣列 result 的形狀為 (4, 2),其中 array1 的元素首先出現,然後是 array2 的元素。np.vstack() 函式垂直堆疊陣列,這意味著陣列一個接一個地放置。

np.hstack():此函式可用於水平堆疊兩個二維陣列。它將陣列元組作為輸入,並返回一個包含水平堆疊的輸入陣列的新陣列。生成的陣列的形狀為 (m, n+p),其中 m 是輸入陣列中的行數,n 和 p 分別是第一個和第二個陣列中的列數。

示例

這是一個演示 np.hstack() 用法的示例

import numpy as np

# Creating two 2-dimensional arrays
array1 = np.array([[1, 2], [3, 4]])
array2 = np.array([[5, 6], [7, 8]])

# Stacking the two arrays horizontally
result = np.hstack((array1, array2))

print("Array 1:")
print(array1)

print("\nArray 2:")
print(array2)

print("\nResult after horizontal concatenation:")
print(result)

輸出

Array 1:
[[1 2]
 [3 4]]

Array 2:
[[5 6]
 [7 8]]

Result after horizontal concatenation:
[[1 2 5 6]
 [3 4 7 8]]

正如您在輸出中觀察到的那樣,生成的連線陣列也是一個形狀為 (2, 4) 的二維 NumPy 陣列。連線陣列的前兩列包含 'array1' 的元素,後兩列包含 'array2' 的元素。

結論

在本文中,我們探討了使用 Numpy 連線兩個二維陣列的兩種方法——np.concatenate() 和 np.vstack()/np.hstack()。我們為每種方法提供了示例,演示瞭如何使用這些函式水平和垂直連線兩個二維陣列。這些方法對於在科學計算、資料分析和機器學習任務中組合陣列和處理大量資料非常有用。

更新於: 2023年7月21日

1000+ 次瀏覽

啟動您的 職業生涯

完成課程獲得認證

開始
廣告
© . All rights reserved.