NumPy 拥有丰富的函数,下面按照不同的功能类别为你较为全面地列出各类函数,并给出简单解释、示例及应用场景。
1. 数组创建
函数 | 解释 | 示例 | 应用场景 |
---|
np.array()
| 从 Python 列表、元组等创建数组 | np.array([1, 2, 3])
| 通用的数据转换,将 Python 序列转换为 NumPy 数组进行数值计算 |
np.zeros()
| 创建指定形状的全零数组 | np.zeros((2, 3))
| 初始化权重矩阵、占位数组等 |
np.ones()
| 创建指定形状的全一数组 | np.ones((3, 2))
| 初始化需要统一初始值的数组,如在某些统计计算中 |
np.empty()
| 创建指定形状的未初始化数组,内容是随机的 | np.empty((2, 2))
| 当你后续会立即填充数组内容,避免初始化开销时使用 |
np.arange()
| 生成等差数列数组 | np.arange(0, 10, 2)
| 生成索引序列、采样序列等 |
np.linspace()
| 在指定区间内生成等间隔的数组 | np.linspace(0, 1, 5)
| 生成绘图用的 x 轴坐标、插值计算等 |
np.logspace()
| 在对数刻度上生成等间隔的数组 | np.logspace(0, 2, 3)
| 处理对数尺度的数据,如信号处理中的频率范围 |
np.eye()
| 创建单位矩阵 | np.eye(3)
| 线性代数中的矩阵运算,如矩阵求逆、求解线性方程组等 |
np.identity()
| 创建单位矩阵,功能与 np.eye() 类似 | np.identity(3)
| 同上 |
2. 数组操作
函数 | 解释 | 示例 | 应用场景 |
---|
np.reshape()
| 改变数组的形状 | np.arange(6).reshape((2, 3))
| 数据格式转换,调整数组维度以适应不同算法需求 |
np.transpose()
| 数组转置 | np.transpose(np.array([[1, 2], [3, 4]]))
| 矩阵运算中常见操作,如矩阵乘法前后的维度调整 |
np.flatten()
| 将多维数组展平为一维数组 | np.array([[1, 2], [3, 4]]).flatten()
| 数据序列化,便于进行一维数据处理 |
np.ravel()
| 与 flatten() 类似,但返回的是视图而非副本 | np.ravel(np.array([[1, 2], [3, 4]]))
| 避免数据复制带来的内存开销,快速访问多维数组元素 |
np.concatenate()
| 沿指定轴连接多个数组 | np.concatenate((np.array([1, 2]), np.array([3, 4])))
| 数据合并,如将多个样本数据合并成一个大的数据集 |
np.vstack()
| 垂直堆叠数组(按行) | np.vstack((np.array([1, 2]), np.array([3, 4])))
| 合并具有相同列数的多个二维数组 |
np.hstack()
| 水平堆叠数组(按列) | np.hstack((np.array([[1], [2]]), np.array([[3], [4]])))
| 合并具有相同行数的多个二维数组 |
np.split()
| 将数组沿指定轴分割成多个子数组 | np.split(np.arange(6), 3)
| 数据划分,如将数据集划分为训练集和测试集 |
np.resize()
| 改变数组的大小,必要时重复填充元素 | np.resize(np.array([1, 2]), (3,))
| 调整数组大小以适应特定的输出要求 |
3. 数学运算
函数 | 解释 | 示例 | 应用场景 |
---|
np.add()
| 数组元素相加 | np.add(np.array([1, 2]), np.array([3, 4]))
| 数值计算中的加法操作,如信号叠加 |
np.subtract()
| 数组元素相减 | np.subtract(np.array([3, 4]), np.array([1, 2]))
| 数值计算中的减法操作,如计算差值 |
np.multiply()
| 数组元素相乘 | np.multiply(np.array([1, 2]), np.array([3, 4]))
| 逐元素乘法,如图像处理中的像素值调整 |
np.divide()
| 数组元素相除 | np.divide(np.array([4, 6]), np.array([2, 3]))
| 数值计算中的除法操作,如计算比例 |
np.dot()
| 计算点积,对于二维数组是矩阵乘法 | np.dot(np.array([[1, 2], [3, 4]]), np.array([[5, 6], [7, 8]]))
| 线性代数中的矩阵乘法,机器学习中的神经网络计算 |
np.matmul()
| 矩阵乘法,推荐用于矩阵乘法操作 | np.matmul(np.array([[1, 2], [3, 4]]), np.array([[5, 6], [7, 8]]))
| 矩阵乘法相关应用,如变换矩阵运算 |
np.power()
| 数组元素求幂 | np.power(np.array([2, 3]), 2)
| 数值计算中的幂运算,如计算平方、立方等 |
np.sqrt()
| 计算数组元素的平方根 | np.sqrt(np.array([4, 9]))
| 数学计算中的平方根操作,如距离计算 |
np.exp()
| 计算数组元素的指数函数 | np.exp(np.array([0, 1]))
| 自然指数运算,在概率统计、机器学习中常用 |
np.log()
| 计算数组元素的自然对数 | np.log(np.array([1, np.e]))
| 对数运算,用于数据变换、概率计算等 |
4. 统计函数
函数 | 解释 | 示例 | 应用场景 |
---|
np.mean()
| 计算数组元素的平均值 | np.mean(np.array([1, 2, 3, 4, 5]))
| 数据分析中描述数据的集中趋势 |
np.median()
| 计算数组元素的中位数 | np.median(np.array([1, 2, 3, 4, 5]))
| 数据分析中,当数据存在异常值时,更稳健地描述数据中心位置 |
np.std()
| 计算数组元素的标准差 | np.std(np.array([1, 2, 3, 4, 5]))
| 衡量数据的离散程度,如评估数据的稳定性 |
np.var()
| 计算数组元素的方差 | np.var(np.array([1, 2, 3, 4, 5]))
| 数据分析中用于衡量数据的离散程度 |
np.min()
| 找出数组中的最小值 | np.min(np.array([1, 2, 3, 4, 5]))
| 数据筛选,找出数据中的最小观测值 |
np.max()
| 找出数组中的最大值 | np.max(np.array([1, 2, 3, 4, 5]))
| 数据筛选,找出数据中的最大观测值 |
np.argmin()
| 找出数组中最小值的索引 | np.argmin(np.array([1, 2, 3, 4, 5]))
| 在需要根据最小值位置进行后续操作时使用 |
np.argmax()
| 找出数组中最大值的索引 | np.argmax(np.array([1, 2, 3, 4, 5]))
| 在需要根据最大值位置进行后续操作时使用 |
np.percentile()
| 计算数组的指定百分位数 | np.percentile(np.array([1, 2, 3, 4, 5]), 50)
| 数据分析中,用于描述数据的分布情况 |
5. 逻辑函数
函数 | 解释 | 示例 | 应用场景 |
---|
np.logical_and()
| 对数组元素进行逻辑与运算 | np.logical_and(np.array([True, False]), np.array([True, True]))
| 条件筛选,根据多个条件筛选数据 |
np.logical_or()
| 对数组元素进行逻辑或运算 | np.logical_or(np.array([True, False]), np.array([False, False]))
| 条件筛选,根据多个条件筛选数据 |
np.logical_not()
| 对数组元素进行逻辑非运算 | np.logical_not(np.array([True, False]))
| 条件反转,修改筛选条件 |
np.where()
| 根据条件返回数组元素 | np.where(np.array([1, 2, 3]) > 2, 1, 0)
| 数据替换,根据条件对数组元素进行替换 |
6. 随机数生成
函数 | 解释 | 示例 | 应用场景 |
---|
np.random.rand()
| 生成指定形状的 [0, 1) 区间内的均匀分布随机数 | np.random.rand(2, 3)
| 模拟实验、初始化随机权重等 |
np.random.randn()
| 生成指定形状的标准正态分布随机数 | np.random.randn(2, 3)
| 模拟高斯噪声、随机初始化神经网络权重 |
np.random.randint()
| 生成指定范围内的随机整数 | np.random.randint(0, 10, (2, 3))
| 随机抽样、游戏开发等 |
np.random.choice()
| 从给定的一维数组中随机抽取元素 | np.random.choice([1, 2, 3], 2)
| 数据采样、随机选择等 |
np.random.shuffle()
| 随机打乱数组元素的顺序 | a = np.array([1, 2, 3]); np.random.shuffle(a)
| 数据打乱,如在机器学习中打乱数据集顺序 |
np.random.permutation()
| 返回一个随机排列的数组副本 | np.random.permutation(np.array([1, 2, 3]))
| 数据重排,如在交叉验证中打乱数据顺序 |
这只是 NumPy 函数的一部分,NumPy 还有很多用于傅里叶变换、线性代数求解等方面的函数,你可以参考 NumPy 官方文档 获取更详细的信息。