NumPy - 向数组插入轴
在 NumPy 中向数组插入轴
向 NumPy 数组插入轴是指向现有数组添加新维度。当您需要对齐数据以进行广播、重塑数组以进行特定操作,或添加新维度以方便堆叠或连接等操作时,此功能尤其有用。
用于此目的的主要函数是 np.expand_dims(),该函数在指定位置添加新轴。
使用 expand_dims() 函数插入轴
NumPy 中的 np.expand_dims() 函数用于向现有数组插入新轴(维度),从而增加其维度。语法如下:
numpy.expand_dims(a, axis)
其中:
- a: 为输入数组。
- axis: 为新轴在维度中插入的位置。
示例
在下面的示例中,我们首先创建一个一维数组。使用 np.expand_dims() 函数,我们在位置 1 处添加一个新轴,将数组转换为二维列向量 -
import numpy as np # 创建一维 NumPy 数组 arr = np.array([1, 2, 3, 4]) # 添加新轴以创建二维列向量 expanded_arr = np.expand_dims(arr, axis=1) print("原始数组: ", arr) print("添加新轴后的数组: ", expanded_arr)
以下是得到的输出 -
原始数组: [1 2 3 4] 添加新轴后的数组: [[1] [2] [3] [4]]
插入轴创建高维数组
插入轴创建高维数组意味着向现有数组添加新维度,从而改变其形状。此过程允许您扩展数组,例如,从一维扩展为二维,或从二维扩展为三维。
这对于广播或重塑数据以满足特定需求等操作非常有用。
示例
在本例中,我们使用 np.expand_dims() 函数添加两个新轴,将一维 NumPy 数组扩展为三维数组 -
import numpy as np # 创建一维 NumPy 数组 arr = np.array([1, 2, 3]) # 添加两个新轴以创建三维数组 expanded_arr = np.expand_dims(arr, axis=(0, 2)) print("原始数组: ", arr) print("包含新轴的三维数组: ", expanded_arr) print("三维数组的形状:", expanded_arr.shape)
这将产生以下结果−
原始数组: [1 2 3] 包含新轴的三维数组: [[[1] [2] [3]]] 三维数组的形状:(1, 3, 1)
使用"None"或"np.newaxis"索引插入轴
插入轴的另一种方法是使用None或np.newaxis索引。这种方法通常因其代码简洁性和可读性而被广泛使用。
通过使用"None"或"np.newaxis"索引,您可以将一维数组扩展为二维或三维数组,或根据需要调整形状。
示例
在下面的示例中,我们通过使用 np.newaxis 索引添加一个新轴,将一维 NumPy 数组转换为二维行向量 -
import numpy as np # 创建一维 NumPy 数组 arr = np.array([1, 2, 3, 4]) # 添加新轴以创建二维行向量 row_vector = arr[:, np.newaxis] print("原始数组: ", arr) print("二维行向量: ", row_vector)
以下是上述代码的输出 -
原始数组: [1 2 3 4] 二维行向量: [[1] [2] [3] [4]]
合并多个带有插入轴的数组
合并多个带有插入轴的数组需要为每个数组添加新的维度,以便它们在连接或堆叠时能够正确对齐。
通过插入轴,可以确保不同形状的数组可以连接在一起。这种技术可以灵活地处理数据并执行各种操作。
示例
在下面的示例中,我们为每个一维数组添加一个新轴,以将它们转换为二维行向量。然后,我们沿轴 0 连接这些行向量,得到一个二维数组,其中每个原始数组现在都是单独的一行 -
import numpy as np # 创建两个一维数组 arr1 = np.array([1, 2, 3]) arr2 = np.array([4, 5, 6]) # 添加新轴以创建二维行向量 arr1_expanded = arr1[np.newaxis, :] arr2_expanded = arr2[np.newaxis, :] # 沿轴 0 连接行向量 combined_arr = np.concatenate([arr1_expanded, arr2_expanded], axis=0) print("Array 1 with New轴: ", arr1_expanded) print("包含新轴的数组 2: ", arr2_expanded) print("组合数组: ", combined_arr)
输出结果如下 -
包含新轴的数组 1: [[1 2 3]] 包含新轴的数组 2: [[4 5 6]] 组合数组: [[1 2 3] [4 5 6]]