【问题标题】:How to write a function for three columns of numbers in J?如何为J中的三列数字编写一个函数?
【发布时间】: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


    【解决方案1】:

    我认为您已经说明了如果将数学符号转换为 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
    

    【讨论】:

      【解决方案2】:

      如果这与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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-07-24
        • 1970-01-01
        • 1970-01-01
        • 2018-11-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多