程序员的数学_身为程序员我敢跟你打赌100块,这个数学符号你根本不会认不会写...

如果你喜欢机器学习和数据科学方面的研究,或者做着相关的工作,总有一天,你一定会想看看你平时经常使用的数学的世界,而不是止步于只会调用Python库。

然后你就会去看很多很多文献,看看那些功能到底是如何运作的。你看的越多、学得越多,你就越有可能想到新的点子,然后成为行业大佬,迎娶白富美、走上人生巅峰!想想都很激动。但是当你打开你的第一份文献,纳尼???这是神马?!

d01e94caf3b2976ae4c0b8153de4ce0b.png

如果你在大学学过数学,或者研究过机器学习,你还是能够隐隐约约马马虎虎辨认出来这都是啥,慢慢看还能写成代码。但是对于很多人来说,这是WHAT???话说古时候象形文字都还挺形象挺直观的,这这这也太复杂了吧!

552ede1ca59a3200ba338ee8a86386ee.png

事实上,你想检验你是否真的看懂了这些方程,你可以试试用代码把这方程写出来。最最最厉害的,你还可以用通俗不晦涩的语言把这些玩意儿表达出来。在这篇文章中,分享了一些代码来描述数学符号的例子!往下看吧!

求和、求积符号

256b742cc3e66c4969ea75b2daf1886d.png

求和符号是数学中最有用、最常用的符号之一。它是迭代的符号,尽管它被涉及得复杂,实现却相当简单,而且非常有用。

# Python代码

x = [1, 2, 3, 4, 5, 6]

result = 0

for i in range(6):

result += x[i]

print(result)

# 输出为21

像看到的代码那样,求和符号用for循环表示,顶部的数字的范围是for循环的次数,下面的数字是循环变量。每次循环都把数加到result中,最后再输出结果。

与求和符号类似的,还有求积符号。

ec5d759818ba262e7566bf7bc9dcb885.png

都用了同样的for循环,只是求和符号是把数加到结果中,而求积符号是把数乘到结果中。看看代码:

# Python代码

x = [1, 2, 3, 4, 5, 1]

result = 1

for i in range(6):

result *= x[i]

print(result)

# 输出为120

阶乘

阶乘的符号是!,它的运用同样十分广泛。那么更应该看看它的实现代码是怎样的。

例如5!的值是通过1×2×3×4×5求得,它的代码这样写:

# Python代码

result = 1

for i in range(1,6):

result *= i

print(result)

# 输出为120

分段函数

ffaccc35050b334f9cc554893e1cdae1.gif

分段函数可以根据后面的条件,知道哪个变量该使用哪个表达式。对于程序员来说,if条件分支语句,可以很方便的实现这个功能:

# Python代码

i = 3

y = [-2, 3, 4, 1]

result = 0

if i in y:

result = sum(y)

elif i > 0:

result = 1

else:

result = 0

print(result)

# 输出为6

如上所示,括号中每一行的正确表示法指示了每条路径应该执行的内容。我将额外的“包含”符号添加到每个条件中,以增加更多的洞察力。如前所述,我们检查了i值是否在y列表中。认识到这一点后,我们返回了数组的和。如果i值不在数组中,我们将根据该值返回0或1。

每一行的表达式,都有唯一的条件来约束,符合条件才能执行对应的表达式。看看第三条语句,条件是y包含i,所以在用代码实现时,我们用in来检查i是否在y数组中。如果i不在y数组中,则i in y这条语句的值是false,否则是true。

看到这里,哦?简单?继续看下面!

矩阵的点乘和叉乘

最后介绍一下数据科学家最常用最喜欢——矩阵的乘法。最容易理解的形式是点乘运算。每行每列对应的元素相乘:

6ade73e9ee0612f9a173ba4cccd1b900.gif

注意两个矩阵的行数相同、列数相同。

代码这样写:

# Python代码

y = [[2,1],[4,3]]

z = [[1,2],[3,4]]

x = [[0,0],[0,0]]

for i in range(len(y)):for j in range(len(y[0])):

x[i][j] = y[i][j] * z[i][j]

print(x)

# 输出为[[2, 2], [12, 12]]

最后看看典型的矩阵乘法过程----叉乘,在机器学习中最常用。第一个矩阵的每行的各元素,乘上第二个矩阵的每列的各元素,再把各个积相加,作为结果矩阵相应位置的元素。说起来很难懂,建议去看看动图,就一目了然了。

ff91842d08c46554c131d6978a3e7a33.gif

代码如下,使用numpy点方法:

# Python代码

y = [[1, 2], [3, 4]]

z = [[2], [1]]

x = [[0], [0]]

for i in range(len(y[0])):sum = 0for j in range(len(z)):

x[i][0] += y[i][j] * z[j][0]

print(x)

# 输出为[[4], [10]]

这只是几个例子。当然,为了提高效率,可以组合使用这些方法,并且通常有一个现成的库。但是对这些代码的理解可以让程序员更深刻得了解数学公式。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值