首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >APL2,压缩每个

APL2,压缩每个
EN

Stack Overflow用户
提问于 2018-12-06 12:43:53
回答 2查看 128关注 0票数 3

我想同时压缩几个向量/矩阵。

这是我的数据:

代码语言:javascript
运行
复制
txt←(3 3⍴'a')(3 3⍴'b')(3 3⍴'c')(3 3⍴'d')
  b←(0 1 0)(1 1 1)(1 1 0)(0 0 0)

现在,我想用txt中相应的布尔向量压缩b中的每个矩阵。

代码语言:javascript
运行
复制
b⌿¨txt

以下是我想要回来的东西:

代码语言:javascript
运行
复制
┌───┬───┬───┬───┐
│aaa│bbb│ccc│   │
│   │bbb│ccc│   │
│   │bbb│   │   │
└───┴───┴───┴───┘

我已经在tryapl.org上尝试过了,它的行为和我预期的一样,但是在APL2中,我得到了一个指向b和每个字形的域错误

这里有没有任何APL2黑客可以帮我这个忙?在没有显式循环的情况下,还有其他方法可以做到这一点吗?内部/外部产品?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-12-06 13:06:27

这在APL2中失败的原因是,纯粹是APL2中的一个运算符,而在Dyalog中,它是一个混合函数/运算符,因为如果它左边有一个数组,那么它的作用就像一个函数,而如果它左边有一个函数,则它是一个操作符。

在Dyalog中,由于作为正常函数,btxt的项将按您的预期由¨配对。

在APL2中,b将被绑定到一元算子作为它的唯一操作数,然后将整个导出函数b⌿¨一起应用于txt的每一项。不用说,整个b (向量向量)对于的单个应用程序来说不是一个合适的左参数。

您可以通过将封装在一个函数中,然后在该包装函数上使用¨来解决这个问题。包装非常简单,如下所示:

代码语言:javascript
运行
复制
r←x R y
r←x⌿y
票数 4
EN

Stack Overflow用户

发布于 2018-12-11 17:13:40

在GNU (一个APL2导数)中,您可以在⌿周围加上圆括号,也可以将⌿置入周围:

代码语言:javascript
运行
复制
      txt←(3 3⍴'a')(3 3⍴'b')(3 3⍴'c')(3 3⍴'d')
        b←(0 1 0)(1 1 1)(1 1 0)(0 0 0)

      b(⌿)¨txt
 aaa  bbb  ccc   
      bbb  ccc   
      bbb     

      b(⌿¨)txt
 aaa  bbb  ccc   
      bbb  ccc   
      bbb        

在最初的IBM APL2 (PC版本)中,所有这些似乎都不起作用。原因可能是⌿含糊不清(它可能意味着“功能压缩”以及“操作符减少”),而⌿标准(由IBM和GNU实现)没有说明如何解决这一模糊性。括号强制将⌿作为函数。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53651765

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档