簡體   English   中英

使用向量函數對每兩個元素求和

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM