2016-08-21 9 views
2

Рассмотрим:Кажущаяся непоследовательность в том, транспонировать |: работает

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

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

|: 1 2 3 
1 
2 
3 

Почему это до сих пор ряд, а не в колонку?

ответ

3

|:

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

Так

$ |: 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│ 
└───┴───┘ 
+3

Ах, так была моя проблема неправильного предположения, что список из 3-х элементов является таким же, как 1 по 3 таблице элементов? – Jonah

+2

Один из способов думать о том, что массив имеет несколько измерений, а транспонирование не добавляет никаких. '1 2 3' является одномерным, и вы ожидали, что транспонирование добавит измерение. – Dane