Кажущееся несоответствие в способе транспонирования |: работает

Рассмотреть возможность:

   |: 2 3 $ 1 2 3
1 1
2 2
3 3
   |: 1 2 3
1 2 3

Первый мне понятен: строки теперь являются столбцами. Но, по аналогии, я ожидал, что вывод второго будет:

   |: 1 2 3
1 
2 
3

Почему это все еще строка, а не столбец?


j
person Jonah    schedule 21.08.2016    source источник


Ответы (1)


|:

меняет порядок осей своего аргумента

So

$ |: 2 3 $ 1 2 3
3 2
$ |: 1 2 3 $ 1 2 3
3 2 1

и естественно

$ |: 1 2 3
3

какой список 1 2 3

Результат, который вы ожидали, имеет оси 3 1; вы получите это для транспонирования списка 1 3 $ 1 2 3

] l =: 1 3 $ 1 2 3
1 2 3
|: l
1
2
3
   ($ l);($ |: l)
┌───┬───┐
│1 3│3 1│
└───┴───┘
person Eelvex    schedule 21.08.2016
comment
Ах, так моя проблема заключалась в неправильном предположении, что список из 3 элементов совпадает с таблицей элементов 1 на 3? - person Jonah; 21.08.2016
comment
Один из способов думать об этом состоит в том, что массив имеет несколько измерений, и транспонирование ничего не добавляет. 1 2 3 является одномерным, и вы ожидали, что транспонирование добавит измерение. - person Dane; 22.08.2016