在每对矢量元素上进行类似扫描的操作

时间:2014-08-06 12:22:32

标签: vector apl dyalog

我有以下矢量:

t ← 1 2 2 3 4 5 5 5 6 6

并希望对每一对进行求和(类似于2+/vec,它将每2个相邻元素相加)。

在APL中执行此操作的最有效方法是什么?

2 个答案:

答案 0 :(得分:1)

如果我理解你的问题,那么你每两件都要尝试一下。最简单的方法是重塑为矩阵,然后对行进行求和:

    t←1 2 2 3 4 5 5 5 6 6
       5 2⍴t
1 2
2 3
4 5
5 5
6 6
       +/5 2⍴t
3 5 9 10 12

这很容易推广三元组等。显然你可以编写一个小函数来确定结果矩阵的形状。

答案 1 :(得分:0)

假设您想要重叠对,请尝试

2 +/ 1 drop (-1) drop 2 / x    // sorry, no apl characters

您的时间将因APL实现以及整数的数据类型和宽度而异。大多数APL支持至少2种类型的数字,2或4字节整数,8字节浮点,更不用说布尔值。 Dyalog APL使用至少三个不同的整数宽度,每个宽度的速度可能不同。实验