我显然已经错过了一些关于如何从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│ │
│ └~─────┘ │
└∊─────────┘
为什么z
与an_expected_vector
不相同?
谢谢! /汉斯
答案 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