对于“i”,在J中强制使用数组而不是矩阵。

发布于 2024-11-07 23:27:03 字数 428 浏览 0 评论 0原文

i. 原语生成一个整数列表:

   i. 10
0 1 2 3 4 5 6 7 8 9

如果我想连续生成几个短列表,我会这样做:(

   ;i."0 each [ 2 3 4
0 1 0 1 2 0 1 2 3

我想要的结果)

装箱(each ) 在这里是一个拐杖,因为没有它, i."0 会产生一个矩阵。

   i."0 [ 2 3 4
0 1 0 0
0 1 2 0
0 1 2 3

(我不想要的结果)

有没有更好的方法来没有 i."0< /code> 将输出格式化为矩阵,但是数组?

The i. primitive produces a list of integers:

   i. 10
0 1 2 3 4 5 6 7 8 9

If I want to produce several short lists in a row, I do this:

   ;i."0 each [ 2 3 4
0 1 0 1 2 0 1 2 3

(the result I want)

Boxing (that each) is a crutch here, because without it, i."0 produces a matrix.

   i."0 [ 2 3 4
0 1 0 0
0 1 2 0
0 1 2 3

(the result I don't want)

Is there a better way to not have i."0 format the output to a matrix, but an array?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

悍妇囚夫 2024-11-14 23:27:03

不,我相信您无法做得比当前的解决方案更好。 i."0 无法返回向量。

"0 副词强制 i. 接受标量,并且 i. 返回向量。 i. 无法知道您的输入是向量而不是标量。根据 J 底漆,结果形状是参数框架和结果。

到目前为止,我发现的最短的“无框”解决方案

(*@$"0~#&,i."0) 2 3 4

仍然比仅使用 ;i 更长。每个 2 3 4

No, I believe you can't do any better than your current solution. There is no way for i."0 to return a vector.

The "0 adverb forces i. to accept scalars, and i. returns vectors. i. has no way of knowing that your input was a vector rather than a scalar. According to The J primer the result shape is the concatenation of the frame of the argument and the result.

The shortest "box-less" solution I've found so far is

(*@$"0~#&,i."0) 2 3 4

which is still longer than just using ;i. each 2 3 4

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文