在NumPy中追加数组
NumPy是Python中用于科学计算的核心库之一,它提供了一个强大的数组对象ndarray
以及用于对这些数组进行操作的广泛函数。在数据处理和分析中,我们经常需要将数据追加到现有的NumPy数组中。本文将详细介绍如何在NumPy中追加数组,并提供多个示例代码以供参考。
使用numpy.append
函数追加元素
NumPy提供了numpy.append
函数,它可以用来在数组的末尾追加值。这个函数的基本语法如下:
numpy.append(arr, values, axis=None)
arr
是要追加数据的原始数组。values
是要追加的值,可以是一个数、一个列表或另一个数组。axis
指定了追加的维度,如果不指定,则values
会被展平后追加。
示例代码1:追加单个元素
import numpy as np
# 创建一个原始数组
original_array = np.array([1, 2, 3])
# 追加一个元素
new_array = np.append(original_array, 4)
print(new_array)
Output:
示例代码2:追加数组
import numpy as np
# 创建一个原始数组
original_array = np.array([1, 2, 3])
# 创建一个要追加的数组
array_to_append = np.array([4, 5, 6])
# 追加数组
new_array = np.append(original_array, array_to_append)
print(new_array)
Output:
示例代码3:沿特定轴追加
import numpy as np
# 创建一个二维原始数组
original_array = np.array([[1, 2, 3], [4, 5, 6]])
# 创建一个要追加的数组
array_to_append = np.array([[7, 8, 9]])
# 沿着第0轴(行)追加
new_array = np.append(original_array, array_to_append, axis=0)
print(new_array)
Output:
使用numpy.concatenate
函数追加数组
除了numpy.append
,NumPy还提供了numpy.concatenate
函数,它可以用来连接两个或多个数组。这个函数的基本语法如下:
numpy.concatenate((a1, a2, ...), axis=0)
(a1, a2, ...)
是一个包含要连接的数组的元组或列表。axis
指定了连接的轴,默认为0。
示例代码4:连接两个一维数组
import numpy as np
# 创建两个数组
array1 = np.array([1, 2, 3])
array2 = np.array([4, 5, 6])
# 连接数组
new_array = np.concatenate((array1, array2))
print(new_array)
Output:
示例代码5:连接两个二维数组
import numpy as np
# 创建两个二维数组
array1 = np.array([[1, 2], [3, 4]])
array2 = np.array([[5, 6], [7, 8]])
# 沿着第0轴(行)连接数组
new_array = np.concatenate((array1, array2), axis=0)
print(new_array)
Output:
示例代码6:沿不同轴连接数组
import numpy as np
# 创建两个二维数组
array1 = np.array([[1, 2], [3, 4]])
array2 = np.array([[5, 6], [7, 8]])
# 沿着第1轴(列)连接数组
new_array = np.concatenate((array1, array2), axis=1)
print(new_array)
Output:
使用numpy.vstack
和numpy.hstack
堆叠数组
当我们需要沿特定轴堆叠数组时,numpy.vstack
(垂直堆叠)和numpy.hstack
(水平堆叠)是非常有用的函数。
示例代码7:垂直堆叠
import numpy as np
# 创建两个数组
array1 = np.array([1, 2, 3])
array2 = np.array([4, 5, 6])
# 垂直堆叠
new_array = np.vstack((array1, array2))
print(new_array)
Output:
示例代码8:水平堆叠
import numpy as np
# 创建两个数组
array1 = np.array([[1], [2], [3]])
array2 = np.array([[4], [5], [6]])
# 水平堆叠
new_array = np.hstack((array1, array2))
print(new_array)
Output:
使用numpy.r_
和numpy.c_
进行简便堆叠
NumPy还提供了numpy.r_
和numpy.c_
对象,它们可以用于快速地沿着第一个轴和第二个轴堆叠数组。
示例代码9:使用numpy.r_
import numpy as np
# 创建两个数组
array1 = np.array([1, 2, 3])
array2 = np.array([4, 5, 6])
# 使用numpy.r_进行堆叠
new_array = np.r_[array1, array2]
print(new_array)
Output:
示例代码10:使用numpy.c_
import numpy as np
# 创建两个数组
array1 = np.array([1, 2, 3])
array2 = np.array([4, 5, 6])
# 使用numpy.c_进行堆叠
new_array = np.c_[array1, array2]
print(new_array)
Output:
使用numpy.insert
函数插入元素
有时我们不仅需要在数组的末尾追加元素,还需要在数组的特定位置插入元素。这时可以使用numpy.insert
函数。
示例代码11:在一维数组中插入元素
import numpy as np
# 创建一个数组
original_array = np.array([1, 2, 4, 5])
# 在索引2的位置插入元素3
new_array = np.insert(original_array, 2, 3)
print(new_array)
Output:
示例代码12:在二维数组中插入元素
import numpy as np
# 创建一个二维数组
original_array = np.array([[1, 2], [4, 5]])
# 在第0行插入一行
new_array = np.insert(original_array, 0, [3, 3], axis=0)
print(new_array)
Output:
使用numpy.resize
函数调整数组大小
当我们需要扩展数组并用重复的数组元素填充新位置时,可以使用numpy.resize
函数。
示例代码13:调整数组大小
import numpy as np
# 创建一个数组
original_array = np.array([1, 2, 3])
# 调整数组大小为6
new_array = np.resize(original_array, 6)
print(new_array)
Output:
使用numpy.pad
函数填充数组
有时我们需要在数组的边缘添加数据。这时可以使用numpy.pad
函数。
示例代码14:填充数组
import numpy as np
# 创建一个数组
original_array = np.array([1, 2, 3])
# 在数组的两端各填充一个0
new_array = np.pad(original_array, pad_width=1, mode='constant', constant_values=0)
print(new_array)
Output:
示例代码15:填充二维数组
import numpy as np
# 创建一个二维数组
original_array = np.array([[1, 2], [3, 4]])
# 在数组的四周各填充一个0
new_array = np.pad(original_array, pad_width=1, mode='constant', constant_values=0)
print(new_array)
Output:
使用numpy.block
函数构建块数组
numpy.block
函数可以用于创建更复杂的数组,它将嵌套的列表作为块来构建数组。
示例代码16:构建块数组
import numpy as np
# 创建一个块数组
new_array = np.block([[np.array([1, 2]), np.array([3, 4])], [np.array([5, 6]), np.array([7, 8])]])
print(new_array)
Output:
使用numpy.column_stack
函数堆叠一维数组为二维数组
numpy.column_stack
函数可以将一维数组堆叠为二维数组,每个一维数组成为二维数组的一列。
示例代码17:堆叠一维数组为二维数组
import numpy as np
# 创建两个一维数组
array1 = np.array([1, 2, 3])
array2 = np.array([4, 5, 6])
# 堆叠一维数组为二维数组
new_array = np.column_stack((array1, array2))
print(new_array)
Output:
使用numpy.row_stack
函数堆叠一维数组为二维数组
numpy.row_stack
函数可以将一维数组堆叠为二维数组,每个一维数组成为二维数组的一行。
示例代码18:堆叠一维数组为二维数组
import numpy as np
# 创建两个一维数组
array1 = np.array([1, 2, 3])
array2 = np.array([4, 5, 6])
# 堆叠一维数组为二维数组
new_array = np.row_stack((array1, array2))
print(new_array)
Output:
使用numpy.dstack
函数沿第三轴堆叠数组
numpy.dstack
函数可以沿第三轴(深度)堆叠数组。
示例代码19:沿第三轴堆叠数组
import numpy as np
# 创建两个二维数组
array1 = np.array([[1, 2], [3, 4]])
array2 = np.array([[5, 6], [7, 8]])
# 沿第三轴堆叠数组
new_array = np.dstack((array1, array2))
print(new_array)
Output:
使用numpy.stack
函数沿新轴堆叠数组
numpy.stack
函数可以沿指定的新轴堆叠数组。
示例代码20:沿新轴堆叠数组
import numpy as np
# 创建两个一维数组
array1 = np.array([1, 2, 3])
array2 = np.array([4, 5, 6])
# 沿新轴堆叠数组
new_array = np.stack((array1, array2), axis=-1)
print(new_array)
Output: