用Python实现各类数学符号运算
2020-03-28
翻译:老齐
与本文相关图书推荐:《跟老齐学Python:数据分析》
在机器学习项目中,你肯定要在代码中实现各种运算,其中必然要用到各种数学符号,因此,必须了解并熟知如何实现。
本文列出常用的数学符号及其Python实现方法,一旦用到,就可以直接拷贝。
$$\frac{1}{N}\sum_{i=1}^N(y_i-\hat{y_i})^2$$
索引
$$x_i$$
这个符号用于表示向量中第几个值。
1 | x = [10, 20, 30] |
还可以拓展到2维向量,乃至更多维度。
$$X_{ij}$$
1 | x = [ [10, 20, 30], [40, 50, 60] ] |
求和
$$\sum_{i=1}^Nx_i$$
这个符号的意思是对某一范围内的向量中的元素求和,上下标为范围。它等同于Python中对向量的索引从0到N-1进行循环,注意,如何用前面的$x_i$符号得到每个值得索引。
1 | x = [1, 2, 3, 4, 5] |
上面的代码可以用内置函数简化:
1 | x = [1, 2, 3, 4, 5] |
PI
$$\prod_{i=1}^Nx_i$$
这个符号的意思是将向量中指定范围的元素求乘积(读作:pi,即字母π的大写形式),Python中的实现方法就是循环得到元素,然后计算乘积。
1 | x = [1, 2, 3, 4, 5] |
管道符
管道符(键盘上的竖线)有多种不同的含义,要具体看它的应用方式。
绝对值
$$|X|$$
作为绝对值符号,返回该数值的绝对值。
1 | x = 10 |
范数
$$||X||$$
范数,也称为向量的模(长),即向量的大小。Python中通过计算数组中每个值的平方和再开方得到。
1 | x = [1, 2, 3] |
Epsilon
$$3\in X$$
这是一个希腊字母(读如:[ˈepsɪlɑːn]
),它用于检验某个元素是不是集合的一员,在Python中,用下面的方式实现:
1 | X = {1, 2, 3} |
函数
$$f:X \to Y$$
这个符号表示函数中的X与Y的对应关系,Python中就是编写一个函数,X为参数,输出Y。
1 | def f(X): |
有时候你也会遇到下面的表述方式,用R替代X、Y:
$$f:R \to R$$
R意味着输入输出都是实数,比如整数、浮点数、无理数、有理数等。Python中当然可以表示:
1 | x = 1 |
还有可能遇到下面的形式:
$$f:R^d \to R$$
$R^d$意味着实数组成的d维度向量(译者注:实数域的d维子空间)。
假设d=2,Python中可以用Numpy提供的函数,例如下面代码中的求和函数,返回的是一个数值,它实现了$R^d$ 到 $R$的映射
1 | X = [1, 2] |
译者注: 严格来讲,本文上面的示例不很准确。[[1], [2]]
,这样的才是严格的2维。
张量
转置
$$X^T$$
这个符号表示的是行列转换,Python中用下面方法实现:
1 | X = [[1, 2, 3], |
输出结果显示行列交换了位置。
1 | [[1, 4], |
乘法
$$X \bullet Y$$
张量间的乘法,在Python中用np.multiply
实现:
1 | x = [[1, 2], |
输出是:
1 | [[2, 4]], |
点积
$$XY$$
$$X.Y$$
点积的结果是每个序列中对应数字积的和。
1 | X = [1, 2, 3] |
有帽子的符号
$$\hat{x}$$
向量上有一个小帽子的符号,表示的是向量中的每个分量除以向量的长度。
1 | x = [1, 2, 3] |
如此所得向量的大小就是1,并且方向不变。
1 | math.sqrt(sum([e**2 for e in x_hat])) |
感叹号
$$x!$$
用感叹号表示阶乘,即从1开始,一直到该数字的所有整数的乘积,在Python中,这样计算:
1 | x = 5 |
也可以用内置模块中的函数实现:
1 | import math |
输出是:
1 | # 5*4*3*2*1 |
原文链接:https://amitness.com/2019/08/math-for-programmers/
搜索技术问答的公众号:老齐教室
在公众号中回复:老齐,可查看所有文章、书籍、课程。
若你觉得我的文章对你有帮助,欢迎点击上方按钮对我打赏
关注微信公众号,读文章、听课程,提升技能