python的numpy中有哪些常用的的函数

发布时间:2021-06-21 14:30:49 作者:chen
来源:亿速云 阅读:183
# 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  # 常规导入方式

数组创建函数

1. 基础创建函数

函数 描述 示例
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])

2. 特殊数组创建

# 从已有数据创建
np.copy(a)  # 数组副本
np.fromfunction(func, shape)  # 通过函数创建

# 网格生成
np.mgrid[0:5,0:5]  # 密集网格
np.ogrid[0:5,0:5]  # 开放网格

数组操作函数

1. 形状操作

函数 描述 示例
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)

2. 数组连接与分割

# 连接
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)  # 水平分割

3. 数组增删

np.append(arr, values, axis=None)
np.insert(arr, obj, values, axis=None)
np.delete(arr, obj, axis=None)
np.unique(arr)  # 去重

数学运算函数

1. 基础数学运算

函数 描述 示例
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)

2. 三角函数

np.sin(arr)  # 正弦
np.cos(arr)  # 余弦
np.tan(arr)  # 正切
np.arcsin(arr)  # 反正弦
np.arccos(arr)  # 反余弦
np.arctan(arr)  # 反正切
np.hypot(x1, x2)  # 欧几里得范数

3. 指数对数函数

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)

4. 舍入函数

np.around(arr, decimals=0)  # 四舍五入
np.floor(arr)  # 向下取整
np.ceil(arr)  # 向上取整
np.trunc(arr)  # 截断小数部分
np.rint(arr)  # 四舍五入到整数

统计函数

1. 基础统计

函数 描述 示例
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)

2. 方差与标准差

np.var(arr)  # 方差
np.std(arr)  # 标准差
np.cov(m, y=None)  # 协方差矩阵
np.corrcoef(x, y=None)  # 相关系数

3. 直方图统计

np.histogram(a, bins=10)  # 直方图
np.bincount(x, weights=None)  # 整型数组的计数
np.digitize(x, bins)  # 返回每个值所属的bin索引

线性代数函数

1. 矩阵操作

函数 描述 示例
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)

2. 矩阵分解与求逆

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分解

3. 线性方程组

np.linalg.solve(a, b)  # 解线性方程组
np.linalg.lstsq(a, b)  # 最小二乘解
np.linalg.norm(x)  # 范数计算

随机数生成函数

1. 基础随机数

函数 描述 示例
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)

2. 概率分布

# 连续分布
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)  # 泊松分布

3. 随机种子

np.random.seed(42)  # 设置随机种子
np.random.get_state()  # 获取随机状态
np.random.set_state(state)  # 设置随机状态

文件输入输出函数

1. 文本文件

函数 描述 示例
loadtxt() 从文本加载 np.loadtxt('data.txt')
savetxt() 保存到文本 np.savetxt('out.txt', arr)
genfromtxt() 从文本生成数组 np.genfromtxt('data.csv', delimiter=',')

2. 二进制文件

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)  # 压缩保存

3. 内存映射

np.memmap(filename, dtype='float32', mode='r', shape=(100,100))

其他实用函数

1. 索引与切片

np.where(condition, [x, y])  # 条件选择
np.take(a, indices)  # 按索引获取元素
np.select(condlist, choicelist)  # 多条件选择
np.nonzero(a)  # 非零元素索引

2. 逻辑运算

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

3. 数组比较

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)  # <=

4. 集合操作

np.intersect1d(ar1, ar2)  # 交集
np.union1d(ar1, ar2)  # 并集
np.setdiff1d(ar1, ar2)  # 差集
np.setxor1d(ar1, ar2)  # 对称差集
np.in1d(ar1, ar2)  # 测试成员

5. 广播与矢量化

np.broadcast(arr1, arr2)  # 广播对象
np.vectorize(pyfunc)  # 矢量化函数

总结

NumPy提供了丰富的函数库,涵盖了从数组创建、数学运算到线性代数和随机数生成的各个方面。掌握这些常用函数能够显著提高科学计算和数据分析的效率。本文介绍了约150个常用NumPy函数,但NumPy的功能远不止于此。建议读者在实际应用中结合官方文档深入探索更多高级功能。

学习建议

  1. 从基础数组操作开始练习
  2. 熟悉广播机制和矢量化运算
  3. 掌握线性代数和统计相关函数
  4. 在实际项目中应用这些函数
  5. 查阅官方文档获取最新功能

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+版本,部分函数在早期版本中可能不可用或行为不同。 “`

推荐阅读:
  1. pytorch中有哪些常用的线性函数
  2. Python中有哪些常用的内置函数

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

python numpy

上一篇:node如何通过express搭建自己的服务器

下一篇:JavaScript中怎么重构代码

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》