如何从另一个 Mat ... 索引具有 2 列的垫子?
How to index a mat with 2 cols from another Mat...?
我有一个名单(文本矩阵)nl43
和其中的多个索引(在 gr43
中),我想通过 [=11] 的第 4 列和第 5 列分配元素索引=] 到 2 个变量,A
和 B
。
当访问单个列时,这将是 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 方法来建立索引,但除了向量之外从未使用过任何东西。有趣的是这种扩展索引如何适用于矩阵和高维数组。
我有一个名单(文本矩阵)nl43
和其中的多个索引(在 gr43
中),我想通过 [=11] 的第 4 列和第 5 列分配元素索引=] 到 2 个变量,A
和 B
。
当访问单个列时,这将是 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 方法来建立索引,但除了向量之外从未使用过任何东西。有趣的是这种扩展索引如何适用于矩阵和高维数组。