了解 J 从
Understanding J From
在 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
阅读文档时我希望索引的形状能够控制答案的形状。
有人可以澄清我在这里遗漏了什么吗?
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
高维数组可能有助于阐明这一点。 n
维的数组有 项 和 n-1
维。当您 select 来自 ({
) 一个三维数组的 item 时,您的结果是一个二维数组:
1 { i. 5 3 4
12 13 14 15
16 17 18 19
20 21 22 23
当您 select 来自一个数组的多个 项 时, 项 被组装成一个新数组,使用每个 atom of x
to select a item of y
.您可能就是从这里了解到 x
的形状会影响结果的形状。
2 1 0 2 { 'set'
test
$ 2 1 0 2
4
$ 'test'
4
结果的维度等于 x
的维度加上 y
的 项 的维度。所以,如果你有一个二维 x
从三维 y
中取出二维 项目 ,你将得到一个四维结果:
(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
最后一点:单子 Ravel (,
) 会将结果缩减为列表(一维数组)。
, 0 1 { 2 3 $ 1 2 3 4 5 6
1 2 3 4 5 6
, i. 2 2 2 2
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
在 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
阅读文档时我希望索引的形状能够控制答案的形状。
有人可以澄清我在这里遗漏了什么吗?
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
高维数组可能有助于阐明这一点。 n
维的数组有 项 和 n-1
维。当您 select 来自 ({
) 一个三维数组的 item 时,您的结果是一个二维数组:
1 { i. 5 3 4
12 13 14 15
16 17 18 19
20 21 22 23
当您 select 来自一个数组的多个 项 时, 项 被组装成一个新数组,使用每个 atom of x
to select a item of y
.您可能就是从这里了解到 x
的形状会影响结果的形状。
2 1 0 2 { 'set'
test
$ 2 1 0 2
4
$ 'test'
4
结果的维度等于 x
的维度加上 y
的 项 的维度。所以,如果你有一个二维 x
从三维 y
中取出二维 项目 ,你将得到一个四维结果:
(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
最后一点:单子 Ravel (,
) 会将结果缩减为列表(一维数组)。
, 0 1 { 2 3 $ 1 2 3 4 5 6
1 2 3 4 5 6
, i. 2 2 2 2
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15