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

时间:2017-10-19 01:36:28

标签: arrays apl dyalog

我显然已经错过了一些关于如何从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不相同?

谢谢! /汉斯

1 个答案:

答案 0 :(得分:1)

2是一个标量,因此a[2]会返回一个标量,恰好是向量42 666。因此它被封闭在一个嵌套的层次中。

如果你使用Pick函数(dyadic ),你将得到预期的结果,因为将从右边的参数中选择左参数指示的元素:

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

Try it online!