如何从另一个 Mat ... 索引具有 2 列的垫子?

How to index a mat with 2 cols from another Mat...?

我有一个名单(文本矩阵)nl43 和其中的多个索引(在 gr43 中),我想通过 [=11] 的第 4 列和第 5 列分配元素索引=] 到 2 个变量,AB。 当访问单个列时,这将是 nl43[gr43[;Column];],但我的手指只是拒绝复制和粘贴该语句来执行第二个任务,因为我的直觉表明必须有更简单的方法 ;-)

好的,所以我终于找到了 (A B)←⊂[1 3]nl43[gr43[;4 5;] 并且对自己感到非常失望,因为我以前从未想过要重新考虑这一点。既然我自己回答了这个问题,我认为没有太多改进的余地???

嗯,有一个嵌套的方法可以做到这一点:(A B)←(⊂nl43){⍺[gr43[;⍵];]}¨4 5 连看都犹豫了,因为感觉太"clumsy"了。但就性能而言,它是明显的赢家:0.234 秒 vs.64 !!

评论? ;-)

类似于

  'abcdefghijklmnopqrstuvwxyz'[3 3 reshape 3 1 20 18 1 20 6 1 20] // []A instead of abcde... in Dyalog
cat
rat
fat
  // result is a matrix

我直觉地希望索引的嵌套参数也能起作用。

  'abcdefghijklmnopqrstuvwxyz'[(3 1 20) (18 1 20) (6 1 20)]
 cat  rat  fat
  // result is a vector of vectors

唉,这还没有,或者说还没有实现。过去我使用过类似的 dfn 方法来建立索引,但除了向量之外从未使用过任何东西。有趣的是这种扩展索引如何适用于矩阵和高维数组。