这一篇文章我会讲一下在mathematica中Map函数的思想,并举一个例子,希望大家举一反三。【这部分由于图片图床失效,导致图片缺失】
更新:
对于这个问题还有一种更好的解答,大家可以看下面的评论。
文章目录(Table of Contents)
问题
有一组数,我想将 > 1 的全部变成 1, < 1 的全部变成 0,应该如何操作。
想法
我们可以先定义一个规则,就是把上面的要求变成一个表达式,如下所示:
- If[t > 1, 1, 0]
接着,我们可以使用 Map 函数将上面的规则应用到数组中的每一个元素中去。
作用
我们再来看一个具体的应用场景:比如想要统计一组数组中大于 1 的元素的个数,那么就可以进行如下的操作。思路:
- 首先将数组中>1的数都变成1,<1的数都变成0
- 对新的数组进行求和
- 这样就统计出一个数组中所有大于1的元素的个数
- Clear[rule];
- rule[t_] := If[t >= 1, 1, 0]
- Total[Map[rule, list]]
或者,上面的也可以变成对一个数组中大于一的元素进行求和,也可以进行如下的操作
- 首先将数组中>1的数都变成1,<1的数都变成0
- 将新的数组与原数组相乘,此时<1的都是0*x,都变成了0,而大于1的不变
- 对新的数组求和,这样就统计出一个数组中所有大于1的元素的和了
- Clear[rule];
- rule[t_] := If[t >= 1, 1, 0]
- Total[Map[rule, list]*list]
- 微信公众号
- 关注微信公众号
-
- QQ群
- 我们的QQ群号
-












2017年10月24日 下午4:39 1F
1-UnitStep[1-x]
即可,能用内置的,数学的,列表化的就不要用自己写的If+Map了~
2017年10月25日 下午8:21 B1
@ wjxway 很棒的方法!