[英]Sum of each two elements using vector functions
如何使用向量函數獲得兩個元素的總和? 我想要與以下相同的結果:
{x+y}':[1 2 3 2 1]
為什么這種方法給出的東西與第一種不同?
sum':[1 2 3 2 1]
sum
與{x+y}
不同。
sum
排名為 1,這意味着它需要一個輸入並將該輸入的元素相加。
它可以對一個原子求和:
q)sum 1
1
統一清單
q)sum 1 2
3
或列表列表
q)sum(1 2;3 4)
4 6
{x+y}
是 2 級,意味着它需要兩個輸入。
q){x+y}[1;2]
3
q){x+y}[1 2;3 4]
4 6
給它一個原子、一個列表或列表列表會導致投影
q){x+y}1
{x+y}[1]
q){x+y}1 2
{x+y}[1 2]
q){x+y}(1 2;3 4)
{x+y}[(1 2;3 4)]
由於每個先驗( ':
)從輸入創建二進制對並嘗試應用等級 2 function,因此它在您的等級 2 function {x+y}
上按預期工作。
但是由於sum
不是 2 級,因此 each-prior 不會以相同的方式生成對,這相當於做
q){x}':[1 2 3 2 1]
1 2 3 2 1
q){sum x}':[1 2 3 2 1]
1 2 3 2 1
您可以將其強制為 2 級:
q){sum(x;y)}':[1 2 3 2 1]
1 3 5 5 3
但這給出了不同的結果,因為sum
忽略了 null 而+
沒有。
q)sum(0N;1)
1
q)0N+1
0N
最后,使用 sum(並且不使用 each-prior)實現此目的的另一種方法是使用prev
移動向量,然后 sum
q){sum(prev x;x)}[1 2 3 2 1]
0N 3 5 5 3
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.