Mathematica进阶[6]–关于Map函数的想法

王 茂南 2017年10月6日10:25:0222 586字阅读1分57秒
摘要这里会介绍关于Mathematica中Map函数的用法,并举了一个例子,方便大家理解。Map函数在Mathematica中是非常常用的,用好了可以减少很多代码量,所以还是要学习一下的。

这一篇文章我会讲一下在mathematica中Map函数的思想,并举一个例子,希望大家举一反三。【这部分由于图片图床失效,导致图片缺失】


更新:

对于这个问题还有一种更好的解答,大家可以看下面的评论。


 

文章目录(Table of Contents)

问题

有一组数,我想将 > 1 的全部变成 1, < 1 的全部变成 0,应该如何操作。

想法

我们可以先定义一个规则,就是把上面的要求变成一个表达式,如下所示:

  1. If[t > 1, 1, 0]

接着,我们可以使用 Map 函数将上面的规则应用到数组中的每一个元素中去。

 

作用

我们再来看一个具体的应用场景:比如想要统计一组数组中大于 1 的元素的个数,那么就可以进行如下的操作。思路:

  1. 首先将数组中>1的数都变成1,<1的数都变成0
  2. 对新的数组进行求和
  3. 这样就统计出一个数组中所有大于1的元素的个数
  1. Clear[rule];
  2. rule[t_] := If[t >= 1, 1, 0]
  3. Total[Map[rule, list]]

 

或者,上面的也可以变成对一个数组中大于一的元素进行求和,也可以进行如下的操作

  1. 首先将数组中>1的数都变成1,<1的数都变成0
  2. 将新的数组与原数组相乘,此时<1的都是0*x,都变成了0,而大于1的不变
  3. 对新的数组求和,这样就统计出一个数组中所有大于1的元素的和了
  1. Clear[rule];
  2. rule[t_] := If[t >= 1, 1, 0]
  3. Total[Map[rule, list]*list]

 

  • 微信公众号
  • 关注微信公众号
  • weinxin
  • QQ群
  • 我们的QQ群号
  • weinxin
王 茂南
  • 本文由 发表于 2017年10月6日10:25:02
  • 转载请务必保留本文链接:https://mathpretty.com/8320.html
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

评论:2   其中:访客  1   博主  1
    • wjxway
      wjxway

      1-UnitStep[1-x]
      即可,能用内置的,数学的,列表化的就不要用自己写的If+Map了~