4

ではJ、 のようなリストがあり、それを のようなボックス構造にし1 2 3たい*:2*

┌─┬─┐
│1│2│
│4│4│
│9│6│
└─┴─┘

あるいは

┌───┐
│1 2│
├───┤
│4 4│
├───┤
│9 6│
└───┘

これを行う方法?よろしくお願いします。

4

2 に答える 2

1

追加モードで動名詞を呼び出す必要があります ( :0)。

a =: 1 2 3
*:`+: (`:0) a
1 4 9
2 4 6

箱入りが必要な場合は、;/それらだけ:

;/*:`+: (`:0) a
┌─────┬─────┐
│1 4 9│2 4 6│
└─────┴─────┘
;/ |:  *:`+: (`:0) a      NB. different axis
┌───┬───┬───┐
│1 2│4 4│9 6│
└───┴───┴───┘
 _3 <\6 1 $,*:`+: (`:0) a   NB. yet another axis
┌─┬─┐
│1│2│
│4│4│
│9│6│
└─┴─┘
于 2013-07-20T20:28:48.893 に答える
1

縦方向 (列方向) の出力が必要な場合は、最初にリストを縦方向 (列方向) の形式に変換する必要があります。

    ,.1 2 3
 1
 2
 3

これで、好きなだけ計算を適用できます。各出力を別々のボックスに入れたい場合は、; を使用してそれらを連鎖させることができます。フォークで:

    (*: ; 2&*) ,. 1 2 3

2 つの注意事項:

  • J では、すべてのデータが同じ型と形状である場合にボックスを使用することは珍しく、不要です。あなたの場合、両方の操作がスカラーと数値であるため、両方の動詞が 1x3 列の数値を生成します。2 つの不透明なボックスを生成するよりも、それらを組み合わせて,.2x3 の数値表を生成する方が、より一般的で慣用的です。;

  • "Double" はすでに J のプリミティブであるため、 の代わりに2&*+:(*: ; +:) ,. 1 2 3

于 2013-07-20T22:36:59.203 に答える