【问题标题】:Problems when trying to use arrays in APL. What have I missed?尝试在 APL 中使用数组时出现问题。我错过了什么?
【发布时间】:2018-03-31 00:05:31
【问题描述】:

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

谢谢! /汉斯

【问题讨论】:

  • 获取介绍性 APL 教科书,如 Gilman 和 Rose,并学习所有简单(即非嵌套)对象索引的示例。了解参数形状的作用至关重要,例如向量[标量]、向量[向量]、矩阵[标量;标量],它们如何影响结果,以及它们与您从 C 中所知道的内容有何关系(即向量[标量])。一旦掌握了基础知识,就可以继续学习嵌套数组示例,例如 (17 4711 (42 666))。 Gilman 和 Rose 在嵌套数组出现之前就已经写好了,所以不会有嵌套的例子。
  • 有趣的数字选择,(42 666)
  • 我最初有两个问题,但后来意识到 [ 和 ] 之间的数据类型很重要([0] 和 [,0] 给出不同的结果)。所以现在,我似乎只剩下一个问题了。我也会寻找推荐的书籍。谢谢!
  • 虽然我同意阅读一本关于 APL 的好书的想法,但我绝对想推荐“Mastering Dyalog APL”而不是 G&R。仅仅因为 G&R,因为我通过它学习了 APL,所以我非常推崇它,现在已经过时了。 Mastering Dyalog APL 可以从dyalog.com/mastering-dyalog-apl.htm免费下载
  • @MBaas 那本书也适用于 ISO APL 吗? Dyalog 扩展是这样调用的吗?我正在学习 APL,但还不确定我是否想致力于 Dyalog。

标签: arrays apl dyalog


【解决方案1】:

2 是一个标量,因此a[2] 返回一个标量,它恰好是向量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!

【讨论】:

    猜你喜欢
    • 2018-11-07
    • 2022-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多