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