尝试在 APL 中使用数组时出现问题。我错过了什么?

Problems when trying to use arrays in APL. What have I missed?

我显然错过了一些关于如何从 APL 中的数组中提取元素的事情,希望有人能看到我错过了什么,以及我应该如何以一种有意义的方式重现预期结果方式。

我是APL的新手,比较习惯Python和C之类的语言。APL中的数据类型和数组操作工具似乎让我有点困惑。

考虑以下代码,请说明为什么会出现预期的(我的)结果,

┌→─────┐
│42 666│
└~─────┘

被嵌入到更复杂的东西中,并且可能是一种解决方法 那个问题。 (使用 Dyalog APL/S-64、16.0.30320)

      ⎕io ← 0
      a ← 17 4711 (42 666)
      z ← a[2]

      an_expected_vector←42 666
      ]DISPLAY an_expected_vector
┌→─────┐
│42 666│
└~─────┘

      ]DISPLAY z
┌──────────┐
│ ┌→─────┐ │
│ │42 666│ │
│ └~─────┘ │
└∊─────────┘

为什么 zan_expected_vector 不同?

谢谢! /汉斯

2 是一个标量,因此 a[2] returns 是一个标量,恰好是向量 42 666。因此,它包含在嵌套级别中。

如果您使用 Pick 函数(二元 ),您将获得预期的结果,因为 将从右侧参数中选择左侧参数指示的元素:

       ⎕io ← 0
       a ← 17 4711 (42 666)
       z ← 2⊃a
       an_expected_vector ← 42 666
       z ≡ an_expected_vector
 1

Try it online!