NumPy 是 Python 数值计算任务的主要库。其基本数据结构是 ndarray,理解如何创建这些数组是基础。ndarray 可以视为 Python 列表的增强版本,专门为快速数学运算设计。创建 NumPy 数组有几种常见方法。从 Python 列表创建数组创建 NumPy 数组最直接的方法是使用 np.array() 函数将现有的 Python 列表或元组进行转换。NumPy 会从列表元素中智能推断数据类型(例如整数或浮点数),但你也可以明确指定它。我们先从一个简单的 Python 列表开始,并将其转换为一维 NumPy 数组(通常用于表示向量):import numpy as np # 一个普通的 Python 列表 my_list = [1, 2, 3, 4, 5] # 将列表转换为 NumPy 数组 my_vector = np.array(my_list) print(my_vector) print(type(my_vector))执行这段代码会得到以下输出:[1 2 3 4 5] <class 'numpy.ndarray'>请注意输出格式 [1 2 3 4 5],其中没有逗号。这是 NumPy 显示数组的标准方式。此外,类型也确认为 numpy.ndarray。通过传递一个列表的列表,我们可以创建二维数组(我们将其用于矩阵):import numpy as np # 一个列表的列表 my_nested_list = [[1, 2, 3], [4, 5, 6]] # 转换为二维 NumPy 数组(矩阵) my_matrix = np.array(my_nested_list) print(my_matrix)这将产生:[[1 2 3] [4 5 6]]NumPy 将数据排列成行和列,在此例中形成一个 2x3 矩阵。使用数组创建函数NumPy 提供方便的函数来创建带有初始占位内容的数组,例如全零、全一或数字序列。这通常比先创建一个 Python 列表更有效。零数组:np.zeros()np.zeros() 函数创建一个完全填充零的数组。你必须以元组形式指定数组所需的形状。import numpy as np # 创建一个包含 4 个零的一维数组(向量) zeros_vector = np.zeros(4) print("零向量:") print(zeros_vector) # 创建一个 2 行 3 列的二维零数组(矩阵) zeros_matrix = np.zeros((2, 3)) print("\n零矩阵:") print(zeros_matrix)输出:Vector of zeros: [0. 0. 0. 0.] Matrix of zeros: [[0. 0. 0.] [0. 0. 0.]]请注意,默认数据类型是浮点数(0.)。全一数组:np.ones()同样,np.ones() 创建一个完全填充一的数组。它也需要将形状作为参数。import numpy as np # 创建一个包含 3 个一的一维数组(向量) ones_vector = np.ones(3) print("全一向量:") print(ones_vector) # 创建一个 3x2 的全一矩阵 ones_matrix = np.ones((3, 2)) print("\n全一矩阵:") print(ones_matrix)输出:Vector of ones: [1. 1. 1.] Matrix of ones: [[1. 1.] [1. 1.] [1. 1.]]同样,默认类型是浮点数。序列数组:np.arange()np.arange() 函数类似于 Python 内置的 range() 函数,但它返回一个 NumPy 数组而非列表迭代器。它在指定的区间内生成带有特定步长的值。np.arange(stop):从 0 开始,直到(不包含)stop 的值。np.arange(start, stop):从 start 开始,直到(不包含)stop 的值。np.arange(start, stop, step):从 start 开始,直到(不包含)stop 的值,每次增加 step。import numpy as np # 从 0 开始直到(不包含)5 的数组 arr1 = np.arange(5) print("np.arange(5):") print(arr1) # 从 2 开始直到(不包含)8 的数组 arr2 = np.arange(2, 8) print("\nnp.arange(2, 8):") print(arr2) # 从 1 开始直到(不包含)10 的数组,步长为 2 arr3 = np.arange(1, 10, 2) print("\nnp.arange(1, 10, 2):") print(arr3)输出:np.arange(5): [0 1 2 3 4] np.arange(2, 8): [2 3 4 5 6 7] np.arange(1, 10, 2): [1 3 5 7 9]np.arange 通常在所有参数均为整数时创建整数数组,但如果任一参数为浮点数,则可以创建浮点数组。线性等距数组:np.linspace()另一个有用的函数是 np.linspace(start, stop, num),它在 start 和 stop 之间(包含两端)创建 num 个均匀分布的值组成的数组。import numpy as np # 创建一个在 0 到 1 之间(包含两端)有 5 个均匀分布值的数组 linear_arr = np.linspace(0, 1, 5) print("np.linspace(0, 1, 5):") print(linear_arr) # 创建一个在 10 到 40 之间有 4 个均匀分布值的数组 another_linear = np.linspace(10, 40, 4) print("\nnp.linspace(10, 40, 4):") print(another_linear)输出:np.linspace(0, 1, 5): [0. 0.25 0.5 0.75 1. ] np.linspace(10, 40, 4): [10. 20. 30. 40.]当你需要在某个范围内获得特定数量的点时,这会特别方便。指定数据类型NumPy 数组有与之关联的特定数据类型(dtype),例如 int64(64 位整数)或 float64(64 位浮点数)。尽管 NumPy 通常能正确推断类型,但你可以在创建时使用 dtype 参数明确设置它。这对于控制内存使用或确保数值精度很重要。import numpy as np # 创建一个零数组,明确设置类型为整数 int_zeros = np.zeros((2, 2), dtype=np.int32) print("整数零矩阵:") print(int_zeros) print("数据类型:", int_zeros.dtype) # 从列表创建一个数组,明确设置类型为浮点数 float_array = np.array([1, 2, 3], dtype=np.float64) print("\n浮点数数组:") print(float_array) print("数据类型:", float_array.dtype)输出:Integer zeros matrix: [[0 0] [0 0]] Data type: int32 Float array: [1. 2. 3.] Data type: float64你现在有多种方法来创建 NumPy 数组:直接从 Python 列表转换,或使用 np.zeros、np.ones、np.arange 和 np.linspace 等专用函数。这些方法为表示我们在线性代数和机器学习中将大量使用的向量和矩阵提供了基础组件。在接下来的章节中,我们将学习如何访问这些数组中的元素并执行基本操作。