如何解决使用 J 的最小元素索引
在 J 中找到数组的最小元素很简单:
<./ 5 6 4 9
4
但是如何使用J找到最小元素的index?
(如果这是一个 XY 问题,我应该说我想要的是索引而不是值,以便我可以在其他数组中查找相应的元素。)
解决方法
我想我会用这个
ind=: I. @: (= <./)
它以返回最低值的 <./
开头,并使用 =
作为 monadic hook 的另一半。 Monadic hooks 接受 y
参数并将最右边的动词应用到它,然后左边的动词使用它作为它的右边参数,原始的 y
作为它的左边参数。因此,(= <./) 5 6 4 9
与 5 6 4 9 = 4
相同并且返回 0 0 1 0
。从那里可以简单地使用 monadic I.
(索引)返回值 1
的索引,当然是 2
。
如果有多个最小值,这也将返回多个索引。
ind 5 6 4 9 4
2 4
如果您只想要第一个或最后一个值,您可以使用包含 i.
(索引的)或 i:
(最后的索引)的更简单的 monadic 钩子:
indfirst =: i. <./
indfirst 5 6 4 9 4
2
indlast =: i: <./
indlast 5 6 4 9 4
4
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。