比较APL中的向量

时间:2014-06-08 10:36:57

标签: vector apl

我想检查APL中的2个向量是否相同。现在我使用以下解决方案(逐个元素比较,对元素求和并与向量a的大小进行比较):

a←1 2 3
b←1 2 3
(+/a=b)=⍴a ⍝ it needs to return 0 or 1

是否有更快或更惯用的解决方案?

2 个答案:

答案 0 :(得分:6)

你可以使用match函数来比较它的整个参数而不是equals,它是一个比较每个参数元素的标量函数:

       a←1 2 3
       b←1 2 3 4 5
       c←1 2 3
      a≡b
0
      a≡c
1

答案 1 :(得分:1)

如上所述,匹配原语如果参数完全相同则返回1。这意味着它们具有完全相同的等级,形状,数据类型和内容。在少数情况下,匹配将返回假阴性,因为数据类型问题(除法导致浮点表示,即使它在整数的比较容差内),或者因为缩放器将不匹配1元素向量。

^ / A = B

如果测试的所有元素都等于b的相应元素,则

将返回1,但如果a和b的长度不同,它将失败并返回LENGTH错误,并且它将使用scaler扩展,因此如果a为1 11和b是缩放器1,结果为1。

匹配通常更好,对大型阵列也更有效。

相关问题