3

Jでは、使用できる要素の数を見つけるために#正しいですか?

例えば

# 2 3 4 5 6
5

わかった。では、多次元配列についてはどうでしょうか

b=: 2 3 4 $ i.2

   b
0 1 0 1
0 1 0 1
0 1 0 1

0 1 0 1
0 1 0 1
0 1 0 1

ここで、#bは2です。最初の次元の長さが2であるため、つまり配列のフレームであると思います。

少し変更すると:

b=:3 2 4 $ i.2
   b
0 1 0 1
0 1 0 1

0 1 0 1
0 1 0 1

0 1 0 1
0 1 0 1

これはタリー3です。これは、先頭のディメンションの長さが3であるためです。

しかし、私はこれを説明することはできません:

#\b
1 2 3

私はbの要素を集計します。したがって、各2x4サブ配列が使用され、#\bが

2 2 2

なぜなら:

c=:2 4 $i.2
   c
0 1 0 1
0 1 0 1
   #c
2

だから私の質問は、なぜ#\ b = 1 2 3なのか?動詞のランクと関係があると思いますよね?私はこのトピックを理解するのに苦労しています...

4

2 に答える 2

6

何が起こっているかを確認する最も簡単な方法は、ボックスに入れること<です\b

   <\b
┌───────┬───────┬───────┐
│0 1 0 1│0 1 0 1│0 1 0 1│
│0 1 0 1│0 1 0 1│0 1 0 1│
│       │       │       │
│       │0 1 0 1│0 1 0 1│
│       │0 1 0 1│0 1 0 1│
│       │       │       │
│       │       │0 1 0 1│
│       │       │0 1 0 1│
└───────┴───────┴───────┘

u\yのプレフィックスに適用さuれます:y

<\1 2 3
┌─┬───┬─────┐
│1│1 2│1 2 3│
└─┴───┴─────┘
#\1 2 3
1 2 3
*/\1 2 3
1 2 6

したがって、それぞれのプレフィックスの#\bアイテム数を示します。b

あなたがおそらくあなたが得るだろうと思ったのは、bの2ランクのアイテム数です:

#"2 b
2 2 2
<"2 b
┌───────┬───────┬───────┐
│0 1 0 1│0 1 0 1│0 1 0 1│
│0 1 0 1│0 1 0 1│0 1 0 1│
└───────┴───────┴───────┘
于 2012-08-21T15:52:32.673 に答える
1

多次元配列のランク0アイテムの数を取得するには、次のようにします。

   rank_0s =: */&$
   wild1 =: 2 3 4 $ 'abcdefghijklmnopqrstuvwxyz'

   rank_0s wild1
24
于 2012-08-23T18:54:23.293 に答える