我有以下向量:
t ← 1 2 2 3 4 5 5 5 6 6
并且想对它的每一对求和(类似于2+/vec
,它对每 2 个相邻元素求和)。
在 APL 中执行此操作的最有效方法是什么?
如果我理解你的问题,你正在尝试每两项求和。最简单的方法是重塑一个矩阵,然后对各行求和:
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
这很容易概括为三元组等。您显然可以编写一个小函数来确定结果矩阵的形状。
尝试
2 +/ 1 滴 (-1) 滴 2 / x
您的时间会因 APL 实现以及整数的数据类型和宽度而异。大多数 APL 至少支持 2 种类型的数字、2 或 4 字节整数、8 字节浮点数,更不用说布尔值了。Dyalog APL 使用三种不同的整数宽度,它们的速度会有所不同。实验。