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 进行授权