我有以下矢量:
t ← 1 2 2 3 4 5 5 5 6 6
并希望对每一对进行求和(类似于2+/vec
,它将每2个相邻元素相加)。
在APL中执行此操作的最有效方法是什么?
答案 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使用至少三个不同的整数宽度,每个宽度的速度可能不同。实验