英文:
Why does v[1+(0×(⍴v))] produce a rank error and not the first item in a 2d array?
问题
首先,我将v分配为:
v ← ⍳(4 9)
v
┌───┬───┬───┬───┬───┬───┬───┬───┬───┐
│0 0│0 1│0 2│0 3│0 4│0 5│0 6│0 7│0 8│
├───┼───┼───┼───┼───┼───┼───┼───┼───┤
│1 0│1 1│1 2│1 3│1 4│1 5│1 6│1 7│1 8│
├───┼───┼───┼───┼───┼───┼───┼───┼───┤
│2 0│2 1│2 2│2 3│2 4│2 5│2 6│2 7│2 8│
├───┼───┼───┼───┼───┼───┼───┼───┼───┤
│3 0│3 1│3 2│3 3│3 4│3 5│3 6│3 7│3 8│
└───┴───┴───┴───┴───┴───┴───┴───┴───┘
接下来,我尝试像这样访问左上角的元素:
v[1+(0×(⍴v))]
然而,我得到一个秩错误。
这里发生了什么?
英文:
First, I assign v as:
v ← ⍳(4 9)
v
┌───┬───┬───┬───┬───┬───┬───┬───┬───┐
│0 0│0 1│0 2│0 3│0 4│0 5│0 6│0 7│0 8│
├───┼───┼───┼───┼───┼───┼───┼───┼───┤
│1 0│1 1│1 2│1 3│1 4│1 5│1 6│1 7│1 8│
├───┼───┼───┼───┼───┼───┼───┼───┼───┤
│2 0│2 1│2 2│2 3│2 4│2 5│2 6│2 7│2 8│
├───┼───┼───┼───┼───┼───┼───┼───┼───┤
│3 0│3 1│3 2│3 3│3 4│3 5│3 6│3 7│3 8│
└───┴───┴───┴───┴───┴───┴───┴───┴───┘
Next I try to access the upper left element like so:
v[1+(0×(⍴v))]
Instead, I get a rank error
What's happening here?
答案1
得分: 2
你实际上正在计算 v[1 1],而你可能想要计算 v[1;1]。还可以尝试:(1+0×⍴v) ⌷ v
英文:
You are essentially computing v[1 1] while you probably meant to compute v[1;1]. Also try: (1+0×⍴v) ⌷ v
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论