Mathematica如何使用纯函数筛选元素比如有一个列表{1,2,8,3,9,4,10,5,6,7},我想把8,9,10这三个明显出错(就是和其余元素的趋势不同)的点给去除掉,想用Select函数,在参考资料中心看到Select函数可以

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/16 06:01:48

Mathematica如何使用纯函数筛选元素比如有一个列表{1,2,8,3,9,4,10,5,6,7},我想把8,9,10这三个明显出错(就是和其余元素的趋势不同)的点给去除掉,想用Select函数,在参考资料中心看到Select函数可以
Mathematica如何使用纯函数筛选元素
比如有一个列表{1,2,8,3,9,4,10,5,6,7},我想把8,9,10这三个明显出错(就是和其余元素的趋势不同)的点给去除掉,想用Select函数,在参考资料中心看到Select函数可以用纯函数来定义选取规则,但是范例中规则每次只用到一个元素,比如Select[{1,2,4,7,6,2},# > 2 &]表示把所有大于2的取出来,但如果我想定义一个规则,让所有与前后的数相差超过1的元素(这里是8,9,10这三个元素)给剔除,需要怎么写这个规则?
我的尝试:
test = {1,2,8,3,9,4,10,5,6,7}
criterion=Table[Abs[test[[#1]] - test[[#2]] &[i,i + 1]]

Mathematica如何使用纯函数筛选元素比如有一个列表{1,2,8,3,9,4,10,5,6,7},我想把8,9,10这三个明显出错(就是和其余元素的趋势不同)的点给去除掉,想用Select函数,在参考资料中心看到Select函数可以
Select 函数不能以直接以索引 True 或 False 的列表来选择元素,函数 Pick 是可以这样使用的.但是有一点是必须注意的就是 在使用 Pick 的时候,"选择" 列具有和数据列相同的长度和结构,也就是你的尝试中,test 和 criterion 的长度必须相同,但你的程序中,test 的长度是 10,而 criterion 的长度却为 9.
下面是我写的完整的代码,仅供参考.
Select[Partition[test, 3, 1, {2, 2}, {test[[-1]], test[[1]]}], 3*#[[2]] - Plus @@ # b