nin*_*ita 7 wolfram-mathematica
想象一下你有:
a = {{5, 1, 1}, {2, 0, 7}, {3, -4, 6}}
Run Code Online (Sandbox Code Playgroud)
并且您想要通过第二列订购,以获得
b = {{3, -4, 6}, {2, 0, 7}, {5, 1, 1}}
Run Code Online (Sandbox Code Playgroud)
我已尝试过SortBy[a, Last]
并为最后一栏工作,但我不能让它适用于第二列.
提前致谢 :-)
Dr.*_*ius 19
这确实有效:
SortBy[a,#[[2]]&]
Run Code Online (Sandbox Code Playgroud)
在这里,对于强制性的时间(我添加了基本Sort
的方法):
a = RandomReal[{0, 10}, {1000000, 3}];
Sort[a, #2[[2]] < #1[[2]] &]; // Timing
(* ==> {34.367, Null} *)
SortBy[a, #[[2]] &]; // Timing
(* ==> {0.436, Null} *)
a[[Ordering[a[[All, 2]]]]]; // Timing
(* ==> {0.234, Null}, Chris wins *)
Run Code Online (Sandbox Code Playgroud)
也许你可以使用这个网址:http://12000.org/my_notes/mma_matlab_control/KERNEL/node99.htm
您可以使用的代码:
a={{300,48,2},{500,23,5},{120,55,7},{40,32,1}};
b=SortBy[a, #[[2]]&]
Run Code Online (Sandbox Code Playgroud)
结果:
Out[9]= {{500,23,5},{40,32,1},{300,48,2},{120,55,7}}
Run Code Online (Sandbox Code Playgroud)