NumPy 使用
介绍
数组对象:numpy.ndarray
参考资料
python
np.savetxt()
np.argsort()
np.sort()
# 找到 2D 数组 arr 最小值的对应行、列索引
i, j = np.unravel_index(np.argmin(arr, axis=None), arr.shape)
# 数值积分函数;通过梯形法则(trapezoidal rule)计算定积分
np.trapz()
数组创建
初始化 numpy 数组时,可以进行预分配
python
import numpy as np
# 从列表创建
np.array([1, 2, 3, 4, 5])
# 从内置函数创建
np.eye() # 单位阵
np.zeros() # 全为 0
np.ones() # 全为 1
np.full() # 填充
np.arange() # 范围
np.linspace() # 等差
np.logspace() # 等比
np.fromstring() # 从字符串提取数据
# 随机
np.random.rand() # 0-1 随机小数
np.random.randint() # 随机整数
np.random.normal() # 正态分布随机数
属性
python
dtype # 数组元素数据类型
shape # 数组形状
ndim # 数组维度
size # 数组元素个数
索引
普通索引、切片索引、布尔索引
二维数组的普通索引
二维数组的切片索引
数学运算
python
* # 数组乘法,元素相乘
np.square() # 平方
np.sqrt() # 平方根
np.cbrt() # 立方根
np.log2() # 对数计算
np.round() # 保留小数位数
# 不使用科学计数法
np.set_printoptions(suppress=True)
通用一元函数:参数是一个数组对象,函数会对数组进行元素级的处理
函数 | 说明 |
---|---|
abs / fabs | 求绝对值的函数 |
sqrt | 求平方根的函数,相当于 array ** 0.5 |
square | 求平方的函数,相当于 array ** 2 |
exp | 计算 $e^x$ 的函数 |
log / log10 / log2 | 对数函数(e 为底 / 10 为底 / 2 为底) |
sign | 符号函数(1 - 正数;0 - 零;-1 - 负数) |
ceil / floor | 上取整 / 下取整 |
isnan | 返回布尔数组,NaN 对应 True ,非 NaN 对应 False |
isfinite / isinf | 判断数值是否为无穷大的函数 |
cos / cosh / sin | 三角函数 |
sinh / tan / tanh | 三角函数 |
arccos / arccosh / arcsin | 反三角函数 |
arcsinh / arctan / arctanh | 反三角函数 |
rint / round | 四舍五入函数 |
通用二元函数:参数是两个数组对象,函数会对两个数组中的对应元素进行运算
python
np.allclose(x, y) # 检查数组 x 和 y 元素是否几乎相等
np.dot(x, y) # 点积运算
np.inner(x, y) # 内积运算
np.cross(x, y) # 叉积运算
intersect1d(x, y) # 交集
统计
axis
参数指定运算沿着哪一个轴来执行,不指定时为对整个数组
python
np.sum() # 加和
np.mean() # 算术平均值
np.min() # 最小值
np.max() # 最大值
np.std() # 标准差
np.var() # 方差
其他常用函数
函数调用:
- 方式 1:Numpy 模块本身的函数(即
np.function()
),如统计相关函数 - 方式 2:通过数组对象本身的方法(即
array.method()
),如数组创建函数,数学和线性代数操作等
python
np.copy() # 拷贝
np.diff()
np.reshape() # 改变数组形状
np.all() # 判断数组是否所有元素都是 True
np.any() # 判断数组是否有为 True 的元素
np.tolist() # 转换成 Python list
np.flatten() # 扁平化
np.unique() # 去重
return_count=True # 返回相同元素的数目
np.hstack() # 横向堆叠多个数组构成新数组
np.vstack() # 纵向堆叠多个数组构成新数组
np.append() # 追加元素
np.insert() # 插入元素
np.where() # 条件查询
np.argwhere() # 满足条件的元素索引
np.remainder() # 计算数组余数
np.isclose() # 比较两个数值是否在某个容忍范围内接近相等
rtol # 相对容忍值
atol # 绝对容忍值
IO
查看 numpy npy npz 格式文件 VSCode 插件:vscode-numpy-viewer
python
np.save("*.npy")
np.savez("*.npz")
np.dump() # 保存数组到二进制文件中
np.tofile() # 将数组写入文件中
np.load()
np.loadtxt()
data.files
# npz 格式文件导入并读取数据默认形式
data["arr_0"]
线性代数
linalg
模块
python
.T # 转置
np.transpose()
@ # 矩阵乘法
np.matmul()
np.dot() # 矩阵 1D,点积;2D,矩阵相乘
np.triu(..., k=...) # 提取上三角矩阵;k 为偏移量
arr.trace() # 对角线元素和
np.linalg.trace() # 对角线元素和
np.linalg.matrix_rank() # 矩阵的秩
np.linalg.inv() # 求逆
np.linalg.det() # 求行列式
np.linalg.eig() # 计算特征值、特征向量
np.linalg.qr() # QR 分解
np.linalg.svd() # 奇异值分解
np.linalg.solve() # 解线性方程组
np.linalg.norm(x, ord="fro") # 范数 ord="fro" F-范数
多项式
python
# 方式 1
p = np.poly1d((2, 3, 1))
# 方式 2
from numpy.polynomial import Polynomial
p = Polynomial((2, 3, 1))
coeffs # 获取多项式系数
coefficients
roots # 获取多项式的根
deriv() # 求导
integ() # 不定积分
polyfit() # 拟合