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

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

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

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

求和、求积符号

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

# Python代码

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

result = 0

for i in range(6):

result += x[i]

print(result)

# 输出为21

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

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

都用了同样的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

分段函数

分段函数可以根据后面的条件,知道哪个变量该使用哪个表达式。对于程序员来说,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。

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

矩阵的点乘和叉乘

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

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

代码这样写:

# 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]]

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

代码如下,使用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]]

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

4符号代码_身为程序员我敢跟你打赌100块,这个数学符号你根本不会认不会写...相关推荐

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

    写在前面:大家好K.首先为你点进这篇有趣的文章点赞

  2. 身为程序员,你接过最奇葩的需求是什么?丨Q言Q语

    - Q 言 Q 语 第 二十一 期 - 本期话题: 身为程序员,你接过最奇葩的需求是什么? 身为执行部门,程序员们总是要去实现各种各样的需求,有的需求来自甲方,有的需求来自产品经理,还有的需求来自产品 ...

  3. java求婚代码_屌丝程序员的求婚道具--内含视频

    身为程序员,求婚的方式,来点和程序相关的,是不是更有意思点呢? ###前言### 于是,从10月份,我就开始策划,要如何把这个求婚方案做完整了.我期望的求婚产生的效果如下: 浪漫 能提现我的技术本身又 ...

  4. 身为程序员就算月薪再高,想找女朋友的话这些你千万别做!

    推荐阅读:程序员如何预防大龄危机 我的一位大学同学,现在三十了,还单着,也是跟我一样从事编程工作,昨天跟我一起吃饭,他向我诉苦,说他在一个APP被一个女孩歧视,他在APP上跟一位女孩聊天时,他聊到他月 ...

  5. 身为程序员还看不懂UML类图? 一文带你零基础学会看UML类图!

    身为程序员还看不懂UML类图? 一文带你零基础学会看UML类图! 一,UML类图示例图 二,UML类图图例 三,分步解析说明 3.1 类图: 3.2 接口: 3.3 实现继承 3.4 实现接口: 3. ...

  6. 如何从挫败感到成就感,身为程序员每天都在经历这些!

    >>原创文章,欢迎转载.转载请注明:转载自IT人故事会,谢谢! >>原文链接地址:如何从挫败感到成就感,身为程序员每天都在经历这些! 昨天加班遇到了一个问题,关于ios的微信端 ...

  7. 身为程序员你必须掌握的职场黑话!

    新媒体管家 点击上方"程序员大咖",选择"置顶公众号" 关键时刻,第一时间送达! 自打互联网出现,就出现了同行才理解的内行黑话,这种黑话往往是你懂我懂外行不懂的 ...

  8. 身为程序员碰到最奇葩的需求是怎样的?

    @梁大折腾 部门老大:你,做个微信小游戏吧 我:啥样的? 老大:反正你就做个小游戏吧,这个火 我:????? @初见若安 最近给客户做了个小程序,当然站在客户的角度也把公众号给客户开通了,没过多久,客 ...

  9. 读书笔记_卓越程序员密码

    The Pragmatic Programmers 图灵程序设计丛书 卓越程序员密码 The Developer's Code  What Real Programmers Do Author: Ka ...

  10. 程序员绩效总结_闲聊程序员的绩效考核

    前言 无规矩不成方圆.-- <孟子·离娄上> 作为程序员的我,以前这个从来没有聊了解过程序员考核,我以前待过的公司,程序员岗位从来没有进行过考核.可能是非专业的互联网公司,也可能是领导不懂 ...

最新文章

  1. 雍培:电力遇上大数据,使我的科研如鱼得水 | 提升之路系列(九)
  2. (6)javascript的程序控制结构及语句-----(1)条件判断
  3. 用SVN下载编译Spring3.2.4源码导入eclipse
  4. 一文带你了解Spring核心接口Ordered的实现及应用
  5. Linq TO SQL 虽好,但不要滥用
  6. SwiftUI之深入解析如何实现3D Scroll效果
  7. 《影响力》6个使人顺从的武器之一互惠原理深入剖析
  8. python二级考试真题_全国BIM技能等级考试真题全套(一/二级,全专业,28套)
  9. 疑似华为Mate 30 Pro上手视频曝光 看完更想买了!
  10. 25个学习要点帮助你从java菜鸟成为Java高手
  11. 别问,问就是我差点在所有浏览器中注入 JavaScript 代码
  12. Ros学习笔记(一)创建工作空间
  13. ES6的开发环境搭建 1
  14. UnityWebPlayer的日志文件在哪
  15. 通达信股票软件日线数据分析
  16. 提升记忆力的三大方法,让孩子告别死记硬背
  17. SimpleITK读取医学影像文件
  18. Python获取链家二手房源数据信息
  19. anaconda安装-超详细版
  20. 前端每日实战 2018 年 6 月份项目汇总(共 27 个项目)

热门文章

  1. python深复制_Python深浅拷贝
  2. react打包后图片丢失_给 React 组件自动加上 react-hot-loader
  3. java.util.zip.ZipException:invalid distance distance too far back
  4. agax分页查询必知知识,分页必须参数详解
  5. 计算机应用技术在医院的应用,计算机管理技术在医院的应用
  6. erp系统原理和实施第五版pdf_ERP系统实施费用!
  7. linux开发arm音量加减代码,arm-linux学习:最简驱动模块(示例代码)
  8. python多线程实现同时下载_Python实现多线程下载
  9. 简单的网站项目开发流程 .
  10. 基于OpenGL编写一个简易的2D渲染框架-11 重构渲染器-Renderer