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 # 创建初始一维数组 arr = np.array([1, 2, 3]) # 添加一个值 arr_appended_single = np.append(arr, 4) # 添加多个值 arr_appended_multiple = np.append(arr, [4, 5, 6]) print("添加一个值后的数组:", arr_appended_single) print("添加多个值后的数组值:", arr_appended_multiple)
以下是得到的输出 −
附加单个值后的数组:[1 2 3 4] 附加多个值后的数组:[1 2 3 4 5 6]
将值附加到二维数组
在 NumPy 中将值附加到二维数组涉及向现有二维数组添加行或列。由于 NumPy 数组的大小是固定的,因此附加值会创建一个新的数组,该数组将原始数据与新数据结合在一起。让我们探索将值附加到二维数组的各种方式和方法 −
附加二维行
要将行附加到二维数组,我们可以使用 np.vstack() 函数。此函数垂直堆叠数组或沿轴 0 连接数组。语法如下:-
numpy.vstack(tup)
其中,tup 是要垂直堆叠的数组序列。所有数组的列数必须相同。
示例
在此示例中,我们使用 np.vstack() 函数将行附加到二维数组,并在现有行下方添加新行 -
import numpy as np # 创建初始二维数组 arr = np.array([[1, 2], [3, 4]]) # 创建要追加的行数组 rows_to_append = np.array([[5, 6], [7, 8]]) # 将行追加到初始数组 arr_appended_rows = np.vstack((arr, rows_to_append)) print("追加行后的数组:") print(arr_appended_rows)
结果是一个新数组,其中追加的行堆叠在底部 -
追加行后的数组: [[1 2] [3 4] [5 6] [7 8]]
追加二维列
要将列追加到二维数组,我们可以使用 np.hstack() 函数。该函数可以水平堆叠数组或沿轴 1 连接数组。语法如下:
numpy.hstack(tup)
其中,tup 是需要水平堆叠的数组序列。所有数组的行数必须相同。
示例
在下面的示例中,我们使用 np.hstack() 函数将列附加到二维数组,并在现有列的右侧添加新列 -
import numpy as np # 创建初始二维数组 arr = np.array([[1, 2], [3, 4]]) # 创建要附加的列数组 columns_to_append = np.array([[5], [6]]) # 将列附加到初始数组 arr_appended_columns = np.hstack((arr, columns_to_append)) print("附加列后的数组:") print(arr_appended_columns)
结果是一个新数组,其中附加的列与原始数据一起放置 -
附加列后的数组: [[1 2 5] [3 4 6]]
附加到多维数组
在 NumPy 中附加到多维数组涉及沿指定轴添加新元素。与一维和二维数组不同,多维数组(例如三维或更高维数)需要仔细对齐要附加数据的维度和轴。
示例
在以下示例中,我们使用 np.append() 函数沿第一个轴向三维数组添加值 -
import numpy as np # 原始三维数组 arr = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]]) # 要附加的值(必须与维度匹配) values = np.array([[[9, 10], [11, 12]], [[13, 14], [15, 16]]]) # 沿轴 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 # 原始整数数组 arr = np.array([1, 2, 3]) # 要附加的值(浮点数) values = np.array([4.5, 5.5]) # 附加值 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: 连接数组所沿的轴。 0 是一维数组的默认值,其他值是多维数组的默认值。
示例
在下面的示例中,我们使用 np.concatenate() 函数沿轴"0"连接两个二维数组 -
import numpy as np # 要连接的数组 arr1 = np.array([[1, 2], [3, 4]]) arr2 = np.array([[5, 6], [7, 8]]) # 沿轴 0 连接 result = np.concatenate((arr1, arr2), axis=0) print(result)
生成的结果如下 -
[[1 2] [3 4] [5 6] [7 8]]