参考本文
1. numpy操作
- arange:对应range
- tile:重复数组堆叠
- mgrid:grid神器
- newaxis:不用reshape,直接添加新列
- unique:去重
- +:拥有广播机制。行+列=矩阵;矩阵+元素=不变形状矩阵;
-
*:数组*数组是元素相乘,不是矩阵相乘(用dot)。
-
==:元素相等
-
array_equal:数组相等;
-
np.exp/log等都是数据操作
-
mask操作:
-
tril/triu
-
批量赋值:
-
批量分配
-
批量取值:
-
类型:赋值不会改变类型;astype、around
下图是自定义数据类型:
-
掩码:numpy.ma,可以保留无效数据继续计算。
-
多项式:p=np.poly1d([3,2,-1])等价于 p = 3 x 2 + 2 x − 1 p=3x^2+2x-1 p=3x2+2x−1,还可以进行求导、求平方根等操作
2. scipy:高级科学计算
一般来说,scipy中有的算法,就不要用numpy了。
scipy会使用fortran的库,可以参考这里。
minpack是一个1980年代用fortran编写的库,用于非线性方程组求解、或是方程组残差的least square minimization。
这里有两个基本概念:
Jaccobi矩阵:多个y(联立方程组)对x的一阶偏导矩阵
注意不要和Hession阵混淆,Hession阵是一个y对x的二阶偏导矩阵。