趋近智
NumPy 是 Python 数值计算任务的主要库。其基本数据结构是 ndarray,理解如何创建这些数组是基础。ndarray 可以视为 Python 列表的增强版本,专门为快速数学运算设计。
创建 NumPy 数组有几种常见方法。
创建 NumPy 数组最直接的方法是使用 np.array() 函数将现有的 Python 列表或元组进行转换。NumPy 会从列表元素中智能推断数据类型(例如整数或浮点数),但你也可以明确指定它。
我们先从一个简单的 Python 列表开始,并将其转换为一维 NumPy 数组(通常用于表示向量 (vector)):
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() 创建一个完全填充一的数组。它也需要将形状作为参数 (parameter)。
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 参数 (parameter)明确设置它。这对于控制内存使用或确保数值精度很重要。
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 等专用函数。这些方法为表示我们在线性代数和机器学习 (machine learning)中将大量使用的向量 (vector)和矩阵提供了基础组件。在接下来的章节中,我们将学习如何访问这些数组中的元素并执行基本操作。
这部分内容有帮助吗?
ndarray对象、其结构和基本属性。© 2026 ApX Machine LearningAI伦理与透明度•