您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# Python的NumPy中有哪些常用的函数
## 目录
1. [NumPy简介](#numpy简介)
2. [数组创建函数](#数组创建函数)
3. [数组操作函数](#数组操作函数)
4. [数学运算函数](#数学运算函数)
5. [统计函数](#统计函数)
6. [线性代数函数](#线性代数函数)
7. [随机数生成函数](#随机数生成函数)
8. [文件输入输出函数](#文件输入输出函数)
9. [其他实用函数](#其他实用函数)
10. [总结](#总结)
## NumPy简介
NumPy(Numerical Python)是Python科学计算的基础库,提供了高性能的多维数组对象和用于操作这些数组的工具。它是数据科学、机器学习、科学计算等领域的核心库之一。
NumPy的主要特点包括:
- 强大的N维数组对象ndarray
- 广播功能函数
- 整合C/C++/Fortran代码的工具
- 线性代数、傅里叶变换、随机数生成等功能
```python
import numpy as np # 常规导入方式
函数 | 描述 | 示例 |
---|---|---|
np.array() |
从列表或元组创建数组 | np.array([1,2,3]) |
np.zeros() |
创建全零数组 | np.zeros((3,3)) |
np.ones() |
创建全1数组 | np.ones((2,2)) |
np.empty() |
创建未初始化数组 | np.empty((3,2)) |
np.arange() |
类似range的数组 | np.arange(0,10,2) |
np.linspace() |
等间隔数组 | np.linspace(0,1,5) |
np.eye() |
单位矩阵 | np.eye(3) |
np.diag() |
对角矩阵 | np.diag([1,2,3]) |
# 从已有数据创建
np.copy(a) # 数组副本
np.fromfunction(func, shape) # 通过函数创建
# 网格生成
np.mgrid[0:5,0:5] # 密集网格
np.ogrid[0:5,0:5] # 开放网格
函数 | 描述 | 示例 |
---|---|---|
reshape() |
改变数组形状 | arr.reshape(3,4) |
resize() |
改变数组形状和大小 | np.resize(arr, (5,5)) |
flatten() |
展平为一维数组 | arr.flatten() |
ravel() |
返回视图的展平数组 | arr.ravel() |
transpose() |
转置数组 | arr.transpose() |
swapaxes() |
交换两个轴 | arr.swapaxes(0,1) |
# 连接
np.concatenate((a1,a2), axis=0)
np.vstack((a1,a2)) # 垂直堆叠
np.hstack((a1,a2)) # 水平堆叠
np.column_stack((a1,a2)) # 按列堆叠
# 分割
np.split(arr, indices_or_sections)
np.vsplit(arr, 3) # 垂直分割
np.hsplit(arr, 2) # 水平分割
np.append(arr, values, axis=None)
np.insert(arr, obj, values, axis=None)
np.delete(arr, obj, axis=None)
np.unique(arr) # 去重
函数 | 描述 | 示例 |
---|---|---|
add() |
加法 | np.add(a,b) |
subtract() |
减法 | np.subtract(a,b) |
multiply() |
乘法 | np.multiply(a,b) |
divide() |
除法 | np.divide(a,b) |
power() |
幂运算 | np.power(a,2) |
mod() |
取模 | np.mod(a,3) |
abs() |
绝对值 | np.abs(a) |
np.sin(arr) # 正弦
np.cos(arr) # 余弦
np.tan(arr) # 正切
np.arcsin(arr) # 反正弦
np.arccos(arr) # 反余弦
np.arctan(arr) # 反正切
np.hypot(x1, x2) # 欧几里得范数
np.exp(arr) # e的幂次
np.expm1(arr) # exp(x)-1
np.log(arr) # 自然对数
np.log10(arr) # 10为底对数
np.log2(arr) # 2为底对数
np.log1p(arr) # log(1+x)
np.around(arr, decimals=0) # 四舍五入
np.floor(arr) # 向下取整
np.ceil(arr) # 向上取整
np.trunc(arr) # 截断小数部分
np.rint(arr) # 四舍五入到整数
函数 | 描述 | 示例 |
---|---|---|
amin() |
沿轴最小值 | np.amin(arr, axis=0) |
amax() |
沿轴最大值 | np.amax(arr, axis=1) |
ptp() |
范围(最大值-最小值) | np.ptp(arr) |
percentile() |
百分位数 | np.percentile(arr, 75) |
median() |
中位数 | np.median(arr) |
mean() |
算术平均数 | np.mean(arr) |
average() |
加权平均数 | np.average(arr, weights=w) |
np.var(arr) # 方差
np.std(arr) # 标准差
np.cov(m, y=None) # 协方差矩阵
np.corrcoef(x, y=None) # 相关系数
np.histogram(a, bins=10) # 直方图
np.bincount(x, weights=None) # 整型数组的计数
np.digitize(x, bins) # 返回每个值所属的bin索引
函数 | 描述 | 示例 |
---|---|---|
dot() |
点积 | np.dot(a,b) |
vdot() |
向量点积 | np.vdot(a,b) |
inner() |
内积 | np.inner(a,b) |
outer() |
外积 | np.outer(a,b) |
matmul() |
矩阵乘法 | np.matmul(a,b) |
tensordot() |
张量点积 | np.tensordot(a,b) |
np.linalg.inv(a) # 矩阵求逆
np.linalg.pinv(a) # 伪逆矩阵
np.linalg.det(a) # 行列式
np.linalg.eig(a) # 特征值和特征向量
np.linalg.svd(a) # 奇异值分解
np.linalg.qr(a) # QR分解
np.linalg.cholesky(a) # Cholesky分解
np.linalg.solve(a, b) # 解线性方程组
np.linalg.lstsq(a, b) # 最小二乘解
np.linalg.norm(x) # 范数计算
函数 | 描述 | 示例 |
---|---|---|
rand() |
[0,1)均匀分布 | np.random.rand(3,2) |
randn() |
标准正态分布 | np.random.randn(100) |
randint() |
随机整数 | np.random.randint(0,10,size=5) |
random() |
[0,1)随机浮点数 | np.random.random(10) |
choice() |
随机选择 | np.random.choice(a, size=3) |
shuffle() |
随机打乱 | np.random.shuffle(arr) |
permutation() |
随机排列 | np.random.permutation(10) |
# 连续分布
np.random.uniform(low=0.0, high=1.0) # 均匀分布
np.random.normal(loc=0.0, scale=1.0) # 正态分布
np.random.exponential(scale=1.0) # 指数分布
# 离散分布
np.random.binomial(n=10, p=0.5) # 二项分布
np.random.poisson(lam=1.0) # 泊松分布
np.random.seed(42) # 设置随机种子
np.random.get_state() # 获取随机状态
np.random.set_state(state) # 设置随机状态
函数 | 描述 | 示例 |
---|---|---|
loadtxt() |
从文本加载 | np.loadtxt('data.txt') |
savetxt() |
保存到文本 | np.savetxt('out.txt', arr) |
genfromtxt() |
从文本生成数组 | np.genfromtxt('data.csv', delimiter=',') |
np.save('array.npy', arr) # 保存为.npy
np.load('array.npy') # 加载.npy文件
np.savez('arrays.npz', a=arr1, b=arr2) # 保存多个数组
np.savez_compressed('arrays.npz', a=arr1) # 压缩保存
np.memmap(filename, dtype='float32', mode='r', shape=(100,100))
np.where(condition, [x, y]) # 条件选择
np.take(a, indices) # 按索引获取元素
np.select(condlist, choicelist) # 多条件选择
np.nonzero(a) # 非零元素索引
np.logical_and(x1, x2)
np.logical_or(x1, x2)
np.logical_not(x)
np.logical_xor(x1, x2)
np.all(a) # 所有元素为True
np.any(a) # 任一元素为True
np.equal(a, b) # ==
np.not_equal(a, b) # !=
np.greater(a, b) # >
np.greater_equal(a, b) # >=
np.less(a, b) # <
np.less_equal(a, b) # <=
np.intersect1d(ar1, ar2) # 交集
np.union1d(ar1, ar2) # 并集
np.setdiff1d(ar1, ar2) # 差集
np.setxor1d(ar1, ar2) # 对称差集
np.in1d(ar1, ar2) # 测试成员
np.broadcast(arr1, arr2) # 广播对象
np.vectorize(pyfunc) # 矢量化函数
NumPy提供了丰富的函数库,涵盖了从数组创建、数学运算到线性代数和随机数生成的各个方面。掌握这些常用函数能够显著提高科学计算和数据分析的效率。本文介绍了约150个常用NumPy函数,但NumPy的功能远不止于此。建议读者在实际应用中结合官方文档深入探索更多高级功能。
NumPy作为Python科学计算生态系统的基石,其重要性不言而喻。希望本文能帮助您更好地理解和使用NumPy的强大功能。
# 示例:综合应用
arr = np.random.randn(100, 100) # 创建100x100正态分布数组
arr = arr * 10 + 5 # 线性变换
mean = np.mean(arr) # 计算均值
std = np.std(arr) # 计算标准差
normalized = (arr - mean) / std # 标准化
eigenvalues = np.linalg.eig(normalized) # 特征值分解
注意:本文基于NumPy 1.21+版本,部分函数在早期版本中可能不可用或行为不同。 “`
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。