Mathematica中一些有用的函数
作为个人使用的技巧存档
Mathematica中一些有用的函数
函数映射
基础
@即前缀运算符:f@x等价于f[x].Map[f,expr]或f/@ expr,将expr中每个元素用f作用.- 特别的,
f/@ {a,b,c}就是{f[a], f[b], f[c]}. - 对于单层情况,即
f/@ g[a,b,c]会变成g[f[a],f[b],f[c]] Map[f,expr,level]将f作用到expr的level层.
- 特别的,
Apply[f,expr]或f@@ expr,将expr的头部用f替换- 对于单层,
f@@ g[a,b,c]即f[a,b,c].因此g是List且f是多元函数时,这相当于对列表计算.
- 对于单层,
MapApply[f,expr]或f@@@ expr,将expr的第1层表头替换为f.- 因此对单层不起作用:
f@@@ {a,b,c}仍为{a,b,c}. - 对于高层,如二层:
f@@@ {{a,b},{c,d}}为{f[a,b],f[c,d]}. - 换言之,即对”列表”中每个子列表元素作用.
- 因此对单层不起作用:
技巧
Through提供如下方法:
1
Through[p[f,g,...][a,b,...]]
将p[f,g]中的每个元素作用到后面的[a,b]上,变成
1
p[f[a,b,...],g[a,b,...],...]
若取p为List,则上述可变为
1
2
Through@ {f,g,h}[a,b,c]
{f[a,b,c], g[a,b,c], h[a,b,c]}
本文由作者按照 CC BY 4.0 进行授权