【发布时间】:2017-10-17 20:55:39
【问题描述】:
我需要编写一个函数,我只需要输入三列数字,它就会输出一列数字。所以他们可以计算每一行,最后只得到一个行号。例如,X= 1 2 3, Y = 2 3 4, Z= 0 1 2,计算(x-z)/(y-z),所以输出为0.5 0.5 0.5
【问题讨论】:
标签: j
我需要编写一个函数,我只需要输入三列数字,它就会输出一列数字。所以他们可以计算每一行,最后只得到一个行号。例如,X= 1 2 3, Y = 2 3 4, Z= 0 1 2,计算(x-z)/(y-z),所以输出为0.5 0.5 0.5
【问题讨论】:
标签: j
我认为您已经说明了如果将数学符号转换为 J(也使用 =: 而不是 = 作为分配)如何解决它
X=: 1 2 3
Y=: 2 3 4
Z=: 0 1 2
(X-Z)%(Y-Z) NB. doesn't need second parenthesis pair (X-Z)%Y-Z also works
0.5 0.5 0.5
再次阅读你想要的数字列而不是行,所以我们将使用 monadic ,. "Ravel Items" 将行更改为列,它获取每个项目并使其成为一行。在这种情况下,每个项目都是一个原子,行被分成列,结果是一列。
ex=: ,.X
why=: ,. Y
zed=: ,. Z
ex
1
2
3
why
2
3
4
zed
0
1
2
(ex-zed)%why-zed
0.5
0.5
0.5
【讨论】:
如果这与your other question 有关,您可以对参数进行框或整形以传递任意形状:
f =: 3 : 0
'x y z' =. y
(x-z)%(y-z)
)
f 1 2 3
2
f (1 2 3);(2 3 4);(0 1 2)
0.5 0.5 0.5
f (2 3 $ 5 4);(2 3$ 6 4 2);(2 3$ 7 5)
2 1 0.4
_1 0.666667 0.333333
f i.3 2 4 3 NB. Input shape (3 a b c...), output shape a b c...
2 2 2
2 2 2
2 2 2
2 2 2
2 2 2
2 2 2
2 2 2
2 2 2
【讨论】: