np.zeros
是 NumPy 库中的一个非常常用的函数,它的作用是创建一个指定形状和数据类型的新数组,并用 0 来填充所有元素。
np.zeros 的基本用法
函数的完整签名是 numpy.zeros(shape, dtype=float, order='C')
。
shape
:你想要创建的数组的形状。可以是一个整数(用于一维数组)或一个元组(用于多维数组)。dtype
:数组中元素的数据类型。默认是float64
(浮点型)。order
:可选参数,用于指定数组在内存中的存储顺序。
示例 1:创建一维数组
import numpy as np# 创建一个包含 5 个 0 的一维数组
arr1d = np.zeros(5)
print(arr1d)
# 输出: [0. 0. 0. 0. 0.]
示例 2:创建二维数组
# 创建一个 2x3 的二维数组
arr2d = np.zeros((2, 3))
print(arr2d)
# 输出:
# [[0. 0. 0.]
# [0. 0. 0.]]
示例 3:指定数据类型
如果你需要整数类型的 0,可以指定 dtype=int
。
# 创建一个 3x3 的整数数组
arr_int = np.zeros((3, 3), dtype=int)
print(arr_int)
# 输出:
# [[0 0 0]
# [0 0 0]
# [0 0 0]]
np.zeros 的应用场景
- 初始化数组:在许多科学计算和机器学习任务中,我们经常需要创建一个空的或初始值为 0 的数组,然后在后面的代码中填充或修改它。
np.zeros
是实现这一点的最简单、最高效的方法。 - 独热编码:在独热编码中,如果你想手动实现,你可以先创建一个全零的数组,然后将对应类别位置的元素设置为 1。
# 假设标签为 2,总类别数为 10 label = 2 num_classes = 10# 创建一个长度为 10 的全零数组 one_hot_label = np.zeros(num_classes)# 将索引为 2 的位置设置为 1 one_hot_label[label] = 1print(one_hot_label) # 输出: [0. 0. 1. 0. 0. 0. 0. 0. 0. 0.]
- 占位符:在构建复杂的数据处理流程时,
np.zeros
经常被用作一个占位符,以确保内存空间在开始时就被分配好。
与 np.empty() 和 np.ones() 的区别
np.ones(shape)
:创建一个填充了 1 的数组。np.empty(shape)
:创建一个指定形状的数组,但其中的元素是未初始化的(即随机的、内存中已有的值),它的速度比np.zeros
稍快,因为它不需要将所有元素都设置为 0。但它的值是不可预测的,所以除非你确定会马上覆盖所有元素,否则不推荐使用。
总而言之,np.zeros
是一个用于初始化数组的强大且安全的工具,它确保了你创建的数组的所有元素都从 0 开始。