NumPy 使用
NumPy 使用
介绍
数组对象:numpy.ndarray
参考资料
- GitHub - rougier/numpy-100: 100 numpy exercises (with solutions)
 - NumPy的应用-1 - Python-100-Days
 - NumPy 介绍
 
1
2
3
4
5
6
7
8
9
10
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 数组时,可以进行预分配
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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()   # 正态分布随机数
属性
1
2
3
4
dtype    # 数组元素数据类型
shape    # 数组形状
ndim     # 数组维度
size     # 数组元素个数
索引
普通索引、切片索引、布尔索引
二维数组的普通索引
二维数组的切片索引
数学运算
1
2
3
4
5
6
7
8
9
10
11
*  # 数组乘法,元素相乘
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 | 
      计算  | 
    
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 | 
      四舍五入函数 | 
通用二元函数:参数是两个数组对象,函数会对两个数组中的对应元素进行运算
1
2
3
4
5
np.allclose(x, y)    # 检查数组 x 和 y 元素是否几乎相等
np.dot(x, y)         # 点积运算
np.inner(x, y)       # 内积运算
np.cross(x, y)       # 叉积运算
intersect1d(x, y)    # 交集
统计
axis 参数指定运算沿着哪一个轴来执行,不指定时为对整个数组
1
2
3
4
5
6
np.sum()     # 加和
np.mean()    # 算术平均值
np.min()     # 最小值
np.max()     # 最大值
np.std()     # 标准差
np.var()     # 方差
其他常用函数
函数调用:
- 方式 1:Numpy 模块本身的函数(即 
np.function()),如统计相关函数 - 方式 2:通过数组对象本身的方法(即 
array.method()),如数组创建函数,数学和线性代数操作等 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
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
1
2
3
4
5
6
7
8
9
10
11
12
np.save("*.npy")
np.savez("*.npz")
np.dump()  # 保存数组到二进制文件中
np.tofile()  # 将数组写入文件中
np.load()
np.loadtxt()
data.files
# npz 格式文件导入并读取数据默认形式
data["arr_0"]
线性代数
linalg 模块
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
.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-范数
多项式
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 方式 1
p = np.poly1d((2, 3, 1))
# 方式 2
from numpy.polynomial import Polynomial
p = Polynomial((2, 3, 1))
coeffs  # 获取多项式系数
coefficients
roots  # 获取多项式的根
deriv()  # 求导
integ()  # 不定积分
polyfit()  # 拟合
        
          
          This post is licensed under 
        
          CC BY 4.0
        
         by the author.
        
      
      
    
