对mathematica中其他部分的更改进行排序

发布于 2024-10-20 20:43:41 字数 189 浏览 8 评论 0原文

我只是想知道:

给定一个列表 {{{3,1,2},{4,2,5}},{{7,1},{2,4}}},我想要对第一个组件进行排序,然后让第二个组件像第一个组件一样进行更改。所需结果为 {{{1,2,3},{2,5,4}},{{1,7},{4,2}}}

我该怎么做?非常感谢您的帮助。

I am just wondering:

given a list {{{3,1,2},{4,2,5}},{{7,1},{2,4}}}, I want to sort the first component, then have the second component change as the first one does. The desired result is {{{1,2,3},{2,5,4}},{{1,7},{4,2}}}.

How can I do this? Many thanks for your help.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

辞慾 2024-10-27 20:43:41

这是确保工作安全的一句话 =)

In[16]:= list={{{3,1,2},{4,2,5}},{{7,1},{2,4}}};

In[17]:= {#[[Ordering[#]]],#2[[Ordering[#]]]}& @@@ list
Out[17]= {{{1,2,3},{2,5,4}},{{1,7},{4,2}}}

这可能更清楚地说明正在发生的事情:

sorter[{a_, b_}] :=
 Module[{order = Ordering[a]},
  {a[[order]], b[[order]]}
  ]

In[19]:= sorter /@ list

Out[19]= {{{1, 2, 3}, {2, 5, 4}}, {{1, 7}, {4, 2}}}

Here's the job-security-ensuring one-liner =)

In[16]:= list={{{3,1,2},{4,2,5}},{{7,1},{2,4}}};

In[17]:= {#[[Ordering[#]]],#2[[Ordering[#]]]}& @@@ list
Out[17]= {{{1,2,3},{2,5,4}},{{1,7},{4,2}}}

This might be a little more clear as to what's happening:

sorter[{a_, b_}] :=
 Module[{order = Ordering[a]},
  {a[[order]], b[[order]]}
  ]

In[19]:= sorter /@ list

Out[19]= {{{1, 2, 3}, {2, 5, 4}}, {{1, 7}, {4, 2}}}
宫墨修音 2024-10-27 20:43:41

我建议:

#[[ All, Ordering@#[[1]] ]] & /@ list

这比迈克尔的要短,而且效率几乎是迈克尔的两倍。

micSort = {#[[Ordering[#]]], #2[[Ordering[#]]]} & @@@ # &;

wizSort = #[[All, Ordering@#[[1]]]] & /@ # &;

a = RandomInteger[100, {2400, 2, 15}];

micSort@a === wizSort@a
First@Timing@Do[#@a, {25}] & /@ {micSort, wizSort}

Out[1]= True

Out[2]= {0.453, 0.282}

I suggest:

#[[ All, Ordering@#[[1]] ]] & /@ list

This is shorter than Michael's, and nearly twice as efficient.

micSort = {#[[Ordering[#]]], #2[[Ordering[#]]]} & @@@ # &;

wizSort = #[[All, Ordering@#[[1]]]] & /@ # &;

a = RandomInteger[100, {2400, 2, 15}];

micSort@a === wizSort@a
First@Timing@Do[#@a, {25}] & /@ {micSort, wizSort}

Out[1]= True

Out[2]= {0.453, 0.282}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文