在J:
a =: 2 3 $ 1 2 3 4 5 6
给出:
1 2 3
4 5 6
哪个是2 3
形状的数组。
如果我这样做:
0 1 { a
我(注意0 1
是一个2
形状的列表)预计会回来:
1 2 3 4 5 6
但是得到了以下内容:
1 2 3
4 5 6
阅读文档我期待索引的形状有点决定答案的形状。
有人可以澄清我在这里缺少的东西吗?
答案 0 :(得分:5)
高维数组可能有助于明确这一点。维度为n
的数组的项的维度为n-1
。从({
)三维数组中选择项时,结果是二维数组:
1 { i. 5 3 4
12 13 14 15
16 17 18 19
20 21 22 23
当您从数组中选择多个项时,项将使用{{1}的每个原子组合成一个新数组}选择x
的项。这可能是您认为y
的形状会影响结果形状的想法。
x
结果的尺寸等于 2 1 0 2 { 'set'
test
$ 2 1 0 2
4
$ 'test'
4
的尺寸加上x
的项的尺寸。因此,如果你有一个二维y
从三维x
获取二维项,你将得到一个四维结果:
y
最后一点说明:monadic Ravel( (2 2 $ 1 1 0 1) { i. 5 3 4
12 13 14 15
16 17 18 19
20 21 22 23
12 13 14 15
16 17 18 19
20 21 22 23
0 1 2 3
4 5 6 7
8 9 10 11
12 13 14 15
16 17 18 19
20 21 22 23
$ (2 2 $ 1 1 0 1) { i. 5 3 4
2 2 3 4
)会将结果缩减为一个列表(一维数组)。
,
答案 1 :(得分:2)
From({
)选择名词的项目。对于2 3 $ 1 2 3 4 5 6
,项目是两行,因为项目是组成名词的组件。
[ a=. 2 3 $ 1 2 3 4 5
1 2 3
4 5 1
0 { a
1 2 3
如果您只有1 2 3
,则项目将是单个原子。
[ b=. 1 2 3
1 2 3
0 { b
1
如果您使用1 3 $ 1 2 3
,那么只有一个项目,结果将是
[ c=. 1 3 $ 1 2 3
1 2 3
0 { c
1 2 3
可以使用Tally(#
)找到项目数,并且是名词的Shape($
)的主要维度。
$ a
2 3
$ b
3
$ c
1 3
# a
2
# b
3
# c
1