NumPy - 陣列堆疊



NumPy 陣列堆疊

NumPy 中的陣列堆疊是指沿新維度組合多個數組,從而建立更高維度的陣列。這與連線不同,連線是在現有軸上組合陣列,不會新增新的維度。

NumPy 提供了幾個函式來實現堆疊。它們如下所示:

  • 使用 numpy.stack() 函式
  • 使用 numpy.vstack() 函式
  • 使用 numpy.hstack() 函式
  • 使用 numpy.dstack() 函式
  • 使用 numpy.column_stack() 函式

使用 stack() 函式堆疊陣列

我們可以使用 NumPy 中的 stack() 函式沿新軸堆疊一系列陣列,在結果中建立一個新維度。

與沿現有軸組合陣列的 numpy.concatenate() 函式不同,numpy.stack() 函式在指定位置向被堆疊的陣列新增一個新軸。

以下是 NumPy 中 stack() 函式的語法:

np.stack(arrays, axis=0)

其中:

  • arrays − 要堆疊的陣列序列。

  • axis − 堆疊陣列的軸。預設值為 0,這會在最前面新增一個新軸。

示例:堆疊一維陣列

在下面的示例中,我們使用 numpy.stack() 函式沿新軸 (axis 0) 堆疊三個一維陣列,得到一個二維陣列:

import numpy as np

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

# Stack arrays along a new axis
stacked_arr = np.stack((arr1, arr2, arr3), axis=0)
print("Stacked Array along a new axis (Axis 0):")
print(stacked_arr)

獲得的輸出如下:

Stacked Array along a new axis (Axis 0):
[[1 2 3]
 [4 5 6]
 [7 8 9]]

示例:更改軸

numpy.stack() 函式中的“axis”引數決定了新軸的插入位置。透過更改 axis 的值,可以控制陣列的堆疊方式:

import numpy as np

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

# Stack arrays along axis 1
stacked_arr = np.stack((arr1, arr2, arr3), axis=1)
print("Stacked Array along Axis 1:")
print(stacked_arr)

這將產生以下結果:

Stacked Array along Axis 1:
[[1 4 7]
 [2 5 8]
 [3 6 9]]

示例:堆疊多維陣列

numpy.stack() 函式也可以用於堆疊多維陣列。該函式向高維陣列新增一個新軸,並相應地堆疊它們。

在這裡,我們堆疊兩個二維陣列:

import numpy as np

# 2D arrays
arr1 = np.array([[1, 2],
                 [3, 4]])

arr2 = np.array([[5, 6],
                 [7, 8]])

# Stack arrays along a new axis
stacked_arr = np.stack((arr1, arr2), axis=0)
print("Stacked 2D Arrays along a new axis (Axis 0):")
print(stacked_arr)

以上程式碼的輸出如下:

Stacked 2D Arrays along a new axis (Axis 0):
[[[1 2]
  [3 4]]

 [[5 6]
  [7 8]]]

使用 column_stack() 函式堆疊陣列

NumPy 中的 numpy.column_stack() 函式用於將一維陣列作為列堆疊到二維陣列中,或者將二維陣列按列堆疊。此函式提供了一種沿第二個軸 (axis=1) 組合陣列的方法,有效地增加了結果陣列中的列數。

以下是語法:

np.column_stack(tup)

其中,tup 是要堆疊的陣列元組。陣列可以是一維或二維的,但必須具有相同的行數。

示例:將一維陣列作為列堆疊

在下面的示例中,我們使用 NumPy column_stack() 函式將兩個一維陣列作為列堆疊到二維陣列中:

import numpy as np

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

# Column-stack 1D arrays
stacked_arr_1d = np.column_stack((arr1, arr2))

print("Stacked 1D arrays as 2D array:")
print(stacked_arr_1d)

我們得到如下所示的輸出:

Stacked 1D arrays as 2D array:
[[1 4]
 [2 5]
 [3 6]]

示例:按列堆疊二維陣列

在這裡,我們使用 NumPy column_stack() 函式按列堆疊兩個二維陣列:

import numpy as np
# 2D arrays
arr3 = np.array([[1, 2],
                 [3, 4]])
arr4 = np.array([[5, 6],
                 [7, 8]])

# Column-stack 2D arrays
stacked_arr_2d = np.column_stack((arr3, arr4))

print("Stacked 2D arrays column-wise:")
print(stacked_arr_2d)

獲得的輸出如下:

Stacked 2D arrays column-wise:
[[1 2 5 6]
 [3 4 7 8]]

垂直堆疊

我們還可以使用 NumPy 中的 vstack() 函式垂直(按行)堆疊陣列。它等同於使用 numpy.concatenate() 函式和 "axis=0",其中陣列沿第一個軸連線。

這將產生一個行數增加的陣列,將多個數組按行組合。以下是語法:

numpy.vstack(tup)

其中,tup 是要垂直堆疊的陣列元組。所有陣列必須具有相同的列數。

示例

在下面的示例中,我們使用 NumPy vstack() 函式垂直堆疊兩個陣列:

import numpy as np

# arrays
arr1 = np.array([[1, 2, 3],
                 [4, 5, 6]])

arr2 = np.array([[7, 8, 9],
                 [10, 11, 12]])

# Stack arrays vertically
stacked_arr = np.vstack((arr1, arr2))

print("Vertically Stacked Array:")
print(stacked_arr)

獲得的輸出如下:

Vertically Stacked Array:
[[ 1  2  3]
 [ 4  5  6]
 [ 7  8  9]
 [10 11 12]]

水平堆疊

我們可以使用 NumPy 中的 hstack() 函式水平(按列)堆疊陣列。它等同於使用 numpy.concatenate() 函式和 "axis=1",其中二維陣列沿第二個軸連線。

這將產生一個列數增加的陣列,將多個數組按列組合。以下是語法:

numpy.hstack(tup)

其中,tup 是要水平堆疊的陣列元組。所有陣列必須具有相同的行數。

示例

在下面的示例中,我們使用 NumPy hstack() 函式水平堆疊兩個陣列:

import numpy as np

# arrays
arr1 = np.array([[1, 2],
                 [3, 4]])

arr2 = np.array([[5, 6],
                 [7, 8]])

# Stack arrays horizontally
stacked_arr = np.hstack((arr1, arr2))

print("Horizontally Stacked Array:")
print(stacked_arr)

執行上述程式碼後,我們得到以下輸出:

Horizontally Stacked Array:
[[1 2 5 6]
 [3 4 7 8]]

深度堆疊

numpy.dstack() 函式用於沿第三維度(也稱為深度維度)堆疊陣列。這將按深度組合陣列,有效地在結果陣列中建立一個新維度。

當您想要將多個二維陣列組合成單個三維陣列時,它特別有用。以下是語法:

np.dstack(tup)

其中,tup 是要沿第三維度堆疊的陣列元組。所有陣列的前兩個維度必須具有相同的形狀。

示例

在這個例子中,我們使用 NumPy dstack() 函式沿第三維度堆疊兩個陣列:

import numpy as np

# arrays
arr1 = np.array([[1, 2],
                 [3, 4]])

arr2 = np.array([[5, 6],
                 [7, 8]])

# Stack arrays along the third dimension
stacked_arr = np.dstack((arr1, arr2))

print("Depth-wise Stacked Array:")
print(stacked_arr)

產生的結果如下:

Depth-wise Stacked Array:
[[[1 5]
  [2 6]]

 [[3 7]
  [4 8]]]
廣告