在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?我认为这与动词等级有关,对吧?我很难理解这个话题...
发布于 2012-08-21 23:52:33
要查看发生了什么,最简单的方法是对\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-24 02:54:23
要获取多维数组中排名为0的项的计数,请执行以下操作:
rank_0s =: */&$
wild1 =: 2 3 4 $ 'abcdefghijklmnopqrstuvwxyz'
rank_0s wild1
24https://stackoverflow.com/questions/12058028
复制相似问题