【问题标题】:Operations on nested arrays in APLAPL 中嵌套数组的操作
【发布时间】:2013-05-05 18:44:14
【问题描述】:

我有以下结构中的数据:

Nums←56 66 19 37 44 20 18 23 68 70 82

A←(⍳¨(3≤⍳4)/⍳4)
┌→────┬───────┐
│1 2 3│1 2 3 4│
└~───→┴~─────→┘

我想要做的是创建另一个嵌套数组,它的元素的值来自Nums,使用来自A 的索引选择,看起来像这样:

┌→───────┬───────────┐
│56 66 19│56 66 19 37│
└~──────→┴~─────────→┘

然后我想对数组的每个元素执行操作,但我想我知道如何从那里开始。 如何在 APL 中创建这样的数组?

【问题讨论】:

    标签: apl dyalog


    【解决方案1】:

    怎么样

    (⊂Nums){⍺[⍵]}¨A
    

    然后你就可以继续申请 youf fn:

    (⊂Nums){fn ⍺[⍵]}¨A
    

    【讨论】:

    • 谢谢。它可以满足我的需要,但我现在想知道是否有更好的方法来做我想做的事情(即:对向量的选定段应用相同的操作,所有段都具有相同的长度)。
    • 在您的示例中,您有两个长度不同的段。你现在将如何控制长度?一个答案可能是将 fn 应用于长度为 4 的段: (⊂Nums){fn 4↑⍺[⍵]}¨A (nb: a 0 将附加到长度为 3 的向量...)
    【解决方案2】:

    这是构造结果的另一种方式

          A⌷¨¨⊂⊂Nums
    56 66 19  56 66 19 37
    

    【讨论】:

      【解决方案3】:

      在 NARS2000 中,简单:

        Nums←56 66 19 37 44 20 18 23 68 70 82
        A←(⍳3)(⍳4)     
        ⎕fmt A
      ┌2──────────────────┐
      │┌3─────┐ ┌4───────┐│
      ││ 1 2 3│ │ 1 2 3 4││
      │└~─────┘ └~───────┘2
      └∊──────────────────┘
        ⎕fmt {Nums[⍵]}¨¨A
      ┌2─────────────────────────┐
      │┌3────────┐ ┌4───────────┐│
      ││ 56 66 19│ │ 56 66 19 37││
      │└~────────┘ └~───────────┘2
      └∊─────────────────────────┘
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-08-13
        • 2020-01-08
        • 1970-01-01
        • 2020-06-08
        • 1970-01-01
        • 1970-01-01
        • 2014-02-13
        • 1970-01-01
        相关资源
        最近更新 更多