作者:LIANG, Southampton, UK
NumPy(Numerical Python)是一个开源的Python库,提供了多维数组(ndarray)和各种用于数组操作的函数。它是科学计算、数据分析和机器学习等领域中最常用的库之一,具有强大的数组操作功能。
常用的NumPy函数功能:
- 创建数组: NumPy可以创建多维数组,包括一维、二维、三维等不同维度的数组。
- 数组操作: NumPy提供了丰富的数组操作,如索引、切片、重塑、合并、分割等。
- 数学运算: NumPy支持基本的数学运算,如加、减、乘、除,以及各种数学函数如三角函数、指数函数、对数函数等。
- 线性代数: NumPy提供了线性代数运算,如矩阵乘法、求逆、特征值分解、奇异值分解等。
- 随机数生成: NumPy包含随机数生成函数,可以生成各种分布的随机数。
- 聚合函数: NumPy提供了聚合函数,如求和、平均值、最大值、最小值等。
- 索引和切片: 可以使用整数索引、布尔索引和切片来访问和修改数组中的元素。
- 广播: NumPy支持广播,可以对不同维度的数组进行运算,使其具有相同的形状。
- 数组比较和逻辑操作: NumPy可以进行数组的逻辑运算、比较运算、布尔索引等。
- 文件操作: NumPy可以将数组保存到文件中,或从文件中加载数组数据。
- 内存管理: NumPy可以管理数组的内存分配和释放,减少了Python列表的内存开销。
- 傅里叶变换: NumPy提供了快速的傅里叶变换函数,用于信号处理和频域分析。
- 图像处理: NumPy可以处理图像数据,执行图像变换、滤波、边缘检测等操作。
- 数据统计: NumPy提供了统计函数,如计算均值、方差、标准差、相关系数等。
- 矢量化操作: NumPy的函数支持矢量化操作,可以对整个数组执行操作,而不需要显式的循环。
总之,NumPy是一个非常强大的库,提供了许多用于数组操作和数值计算的函数。它为科学计算提供了基础,让用户能够高效地进行各种数值和数组操作。
numpy中的常用函数:
import numpy as np
- 建数组:
numpy.array()
: 创建一个NumPy数组。
numpy.zeros()
, numpy.ones()
: 创建全零或全一数组。
numpy.empty()
: 创建未初始化的数组。
numpy.arange()
: 创建一个等差数列数组。
numpy.linspace()
: 创建一个等间隔数列数组。
numpy.eye()
: 创建单位矩阵数组。
- 数组操作:
numpy.shape()
, numpy.ndim
, numpy.size
: 获取数组的形状、维度和大小。
numpy.reshape()
: 改变数组的形状。
numpy.concatenate()
, numpy.vstack()
, numpy.hstack()
: 数组的合并和堆叠操作。
numpy.split()
, numpy.hsplit()
, numpy.vsplit()
: 数组的分割操作。
numpy.transpose()
, numpy.T
: 数组的转置操作。
- 数学运算:
numpy.add()
, numpy.subtract()
, numpy.multiply()
, numpy.divide()
: 加减乘除操作。
numpy.dot()
, numpy.matmul()
: 矩阵乘法操作。
numpy.exp()
, numpy.log()
, numpy.sqrt()
, numpy.sin()
, numpy.cos()
, numpy.tan()
: 指数、对数、平方根、三角函数等数学函数。
- 随机数生成:
numpy.random.rand()
, numpy.random.randn()
: 生成随机数。
numpy.random.randint()
: 生成随机整数。
np.random.uniform(a,b)
:生成[a,b]区间内的随机数。
numpy.random.choice()
: 从给定数组中随机选择元素。
- 聚合函数:
numpy.sum()
, numpy.mean()
, numpy.median()
: 求和、均值、中位数。
numpy.min()
, numpy.max()
: 最小值、最大值。
numpy.std()
, numpy.var()
: 标准差、方差。
- 数组比较和逻辑操作:
numpy.equal()
, numpy.not_equal()
, numpy.greater()
, numpy.less()
: 比较操作。
numpy.logical_and()
, numpy.logical_or()
, numpy.logical_not()
: 逻辑操作。
- 线性代数:
numpy.linalg.inv()
: 计算矩阵的逆。
numpy.linalg.det()
: 计算矩阵的行列式。
numpy.linalg.eig()
: 计算矩阵的特征值和特征向量。
- 文件操作:
numpy.save()
, numpy.savez()
, numpy.load()
: 数组的保存和加载。
- 数据统计:
numpy.histogram()
: 计算直方图。
numpy.corrcoef()
: 计算相关系数矩阵。
- 数组查找和排序:
numpy.argmax()
, numpy.argmin()
: 返回数组中最大值和最小值的索引。
numpy.sort()
, numpy.argsort()
: 对数组进行排序和返回排序后的索引。
numpu.nanmax()
,numpy.nanmin()
: 查找非nan的最大值与最小值。
numpu.max()
,numpy.min()
: 查找最大值与最小值。
- 数据处理与清洗
numpy.isnan(arr)
: 判断数组中的元素是否为NaN。
numpy.nan_to_num(arr)
: 将数组中的NaN值替换为0,将无穷大值替换为较小的数。
numpy.fillna(arr, value)
: 将数组中的NaN值替换为特定值。
numpy.delete(arr, indices, axis=None)
: 从数组中删除指定行或列。
numpy.extract(condition, arr)
: 根据条件提取满足条件的数组元素。
numpy.where(condition, x, y)
: 根据条件替换数组中的值。
numpy.sort(a, axis=-1, kind=None, order=None)
: 对数组进行排序。
numpy.clip(a, a_min, a_max, out=None)
: 将数组中的值限制在指定范围内。
numpy.unique(arr, return_index=False, return_inverse=False, return_counts=False)
: 返回数组中的唯一值。
numpy.linalg.norm(x, ord=None, axis=None, keepdims=False)
: 将数组的值缩放到单位范数。
numpy.std(arr, axis=None, dtype=None, out=None, ddof=0, keepdims=<no value>)
: 计算数组的标准差。
numpy.mean(arr, axis=None, dtype=None, out=None, keepdims=<no value>)
: 计算数组的平均值。
numpy.concatenate((a1, a2, ...), axis=0, out=None)
: 合并数组。
numpy.vstack(tup)
: 垂直(按行)堆叠数组。
numpy.hstack(tup)
: 水平(按列)堆叠数组。
- 卷积和滤波
- 傅立叶变换
- 图像处理
- 多项式
- 插值
- …
值得注意的是,numpy
中的许多用法在pandas
中也用类似的使用。作者认为,numpy是一个比pandas更加轻量级的库。在学习完numpy
的使用后,去学习pandas
效果更好。关于numpy
的更多用法,请参考Numpy官网