【求助】如何标记最小值所在数组的位置
mathematica吧
全部回复
仅看楼主
level 3
values={{-0.5, -0.5, -0.5, -0.5, -0.5}, {-0.5, -0.49, -0.499, -0.363, -0.4}, {-0.2, -0.49, -0.999, -0.4964, -0.4}, {-0.6, -0.49, -0.4999, -0.499964, -0.4999363}, {-0.75, -0.49, -0.4999, -0.494, -0.4363}, {-0.45, -0.49, -0.4999, -0.964, -0.9363}};
mintvalue = Map[Min, values];
{-0.5, -0.5, -0.999, -0.6, -0.75, -0.964}
我想把每一个最小值的所在的第一个位置输出,比如minvalue={-0.5, -0.5, -0.999, -0.6, -0.75, -0.964}。
那么如何输出其在values中的位置{1,1,3,1,1,4}?
应该用FirstPosition 但是不知道该如何写。[乖]
希望大佬一句代码解我愁。
2020年06月05日 22点06分 1
level 7
Cases[values, {a___} :> Flatten[Position[{a}, Min[a]]][[1]]]
a 后面是连着三个下划线
2020年06月05日 23点06分 2
[[1]]其实可以不用写外面,Position第3种语法是允许只输出前n个的。
2020年06月06日 01点06分
具体地说就是:Cases[values, a_ :> Flatten@Position[a, Min[a], 1, 1]]
2020年06月06日 01点06分
@xzcyr 啊,了解了
2020年06月06日 02点06分
@三炮快跑☞ 大佬,你这个也可以,比心
2020年06月06日 12点06分
level 7
Ordering[#, 1][[1]] & /@ values
2020年06月05日 23点06分 3
这个大概是最快的。
2020年06月06日 01点06分
谢谢大佬~
2020年06月06日 12点06分
吧务
level 15
你要FirstPosition当然是可以的:
MapThread[FirstPosition, {values, mintvalue}]
下面纯炫技:
Thread@Unevaluated@FirstPosition[##] &[values, mintvalue]
2020年06月06日 01点06分 4
谢谢吧主大佬[花心]
2020年06月06日 12点06分
1