NumPy - 向陣列追加值



在 NumPy 中向陣列追加值

在 NumPy 中向陣列追加值意味著向現有的 NumPy 陣列新增新元素或陣列。此操作涉及建立一個包含原始元素以及新元素的新陣列,因為 NumPy 陣列具有固定大小,並且不支援像傳統列表那樣的就地修改。

向一維陣列追加值

向 NumPy 中的一維陣列追加值涉及將新元素新增到現有的一維陣列的末尾。由於 NumPy 陣列具有固定大小,因此此操作會建立一個新陣列,其中包含原始元素以及新追加的值。為此,我們可以在 NumPy 中使用np.append()函式。以下是語法:

numpy.append(arr, values, axis=None)

其中,

  • arr:將向其追加值的原始陣列。
  • values:要追加的值。可以是單個值或陣列。
  • axis:追加值的軸。對於一維陣列,此引數被忽略,可以為 None。

示例

在以下示例中,我們使用 np.append() 向一維陣列新增元素:首先追加單個值,然後追加多個值:

import numpy as np

# Create an initial 1D array
arr = np.array([1, 2, 3])

# Append a single value
arr_appended_single = np.append(arr, 4)

# Append multiple values
arr_appended_multiple = np.append(arr, [4, 5, 6])

print("Array after appending a single value:", arr_appended_single)
print("Array after appending multiple values:", arr_appended_multiple)

獲得以下輸出:

Array after appending a single value: [1 2 3 4]
Array after appending multiple values: [1 2 3 4 5 6]

向二維陣列追加值

向 NumPy 中的二維陣列追加值涉及向現有的二維陣列新增行或列。由於 NumPy 陣列具有固定大小,因此追加值會導致建立一個新陣列,該陣列將原始資料與新資料組合在一起。讓我們探索用於向二維陣列追加值的各種方法。

追加二維行

要向二維陣列追加行,我們可以使用np.vstack()函式。此函式垂直堆疊陣列或沿軸 0 連線。以下是語法:

numpy.vstack(tup)

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

示例

在此示例中,我們使用 np.vstack() 函式向二維陣列追加行,在現有行的下方新增新行:

import numpy as np

# Create an initial 2D array
arr = np.array([[1, 2], [3, 4]])

# Create an array of rows to append
rows_to_append = np.array([[5, 6], [7, 8]])

# Append rows to the initial array
arr_appended_rows = np.vstack((arr, rows_to_append))

print("Array after appending rows:")
print(arr_appended_rows)

結果是一個新陣列,其中附加的行堆疊在底部:

Array after appending rows:
[[1 2]
 [3 4]
 [5 6]
 [7 8]]

追加二維列

要向二維陣列追加列,我們可以使用np.hstack()函式。此函式水平堆疊陣列或沿軸 1 連線。以下是語法:

numpy.hstack(tup)

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

示例

在下面的示例中,我們使用 np.hstack() 函式向二維陣列追加列,在現有列的右側新增新列:

import numpy as np

# Create an initial 2D array
arr = np.array([[1, 2], [3, 4]])

# Create an array of columns to append
columns_to_append = np.array([[5], [6]])

# Append columns to the initial array
arr_appended_columns = np.hstack((arr, columns_to_append))

print("Array after appending columns:")
print(arr_appended_columns)

結果是一個新陣列,其中附加的列放置在原始資料的旁邊:

Array after appending columns:
[[1 2 5]
 [3 4 6]]

追加到多維陣列

向 NumPy 中的多維陣列追加涉及沿指定軸新增新元素。與一維和二維陣列不同,多維陣列(例如 3D 或更高)需要仔細對齊要沿其追加資料的維度和軸。

示例

在以下示例中,我們使用 np.append() 函式沿第一個軸向 3D 陣列新增值:

import numpy as np

# Original 3D array
arr = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])

# Values to append (must match dimensions)
values = np.array([[[9, 10], [11, 12]], [[13, 14], [15, 16]]])

# Append values along axis 0
result = np.append(arr, values, axis=0)
print(result)

生成的陣列將新值作為附加層追加到原始陣列的頂部:

[[[ 1  2]
 [ 3  4]]

[[ 5  6]
 [ 7  8]]

[[ 9 10]
 [11 12]]

[[13 14]
 [15 16]]]

使用不同資料型別追加

使用 NumPy 中的不同資料型別追加陣列需要小心處理,因為 NumPy 陣列是同質的;它們必須包含相同資料型別的元素。

當追加具有不同資料型別的陣列時,NumPy 通常會執行型別強制或建立一個具有通用資料型別的新陣列,該陣列可以包含所有追加的資料。

示例

在此示例中,我們使用 np.append() 向整數陣列新增浮點值:

import numpy as np

# Original array of integers
arr = np.array([1, 2, 3])

# Values to append (floating-point)
values = np.array([4.5, 5.5])

# Append values
result = np.append(arr, values)
print(result)  

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

[1.  2.  3.  4.5 5.5]

使用 np.concatenate() 函式追加

我們可以使用 np.concatenate() 函式沿指定軸組合陣列。它對於將資料追加到現有陣列特別有用。以下是語法:

numpy.concatenate((a1, a2, ...), axis=0)

其中,

  • a1、a2、...:要連線的陣列。它們必須具有相同的形狀,除了與 axis 引數對應的維度。
  • axis:要沿其連線陣列的軸。0 是 1D 陣列的預設值,其他值用於多維陣列。

示例

在以下示例中,我們使用 np.concatenate() 函式沿軸“0”連線兩個 2D 陣列:

import numpy as np

# Arrays to concatenate
arr1 = np.array([[1, 2], [3, 4]])
arr2 = np.array([[5, 6], [7, 8]])

# Concatenate along axis 0
result = np.concatenate((arr1, arr2), axis=0)
print(result)

產生的結果如下:

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