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]]
广告