transpose

语法

transpose(X)

别名:flip(X)

参数

X 是一个元组、矩阵、表或字典。

详情

如果X是一个元组,每个向量的长度必须相同,transpose 函数返回的是一个与X中每个向量长度相同的元组,返回结果中的第n个元素是由X中每个向量的第n个值组成的向量。

如果X是一个矩阵,transpose 函数返回X的转置矩阵。

如果X是一个表,transpose 函数把表X转换为一个有序字典(从1.30.21版本开始支持有序字典),表中的列名为key,每列的值为value。

如果X是一个字典,它的key必须是STRING类型,transpose 函数把字典X转换为一个表,key为列名,每个key对应的value都是等长的向量,表示每列的值。

例子

例1. X是一个元组。

$ x=(`A`B`C,1 2 3);
$ x.transpose();
(("A",1),("B",2),("C",3))

例2. X是一个矩阵。

$ x=1..6 $ 3:2;
$ x;

#0

#1

1

4

2

5

3

6

$ transpose x;

#0

#1

#2

1

2

3

4

5

6

例3. X是一个表。

$ timestamp = [09:34:07,09:36:42,09:36:51,09:36:59,09:32:47,09:35:26,09:34:16,09:34:26,09:38:12]
$ sym = `C`MS`MS`MS`IBM`IBM`C`C`C
$ price= 49.6 29.46 29.52 30.02 174.97 175.23 50.76 50.32 51.29
$ qty = 2200 1900 2100 3200 6800 5400 1300 2500 8800
$ t = table(timestamp, sym, qty, price);
$ t;

timestamp

sym

qty

price

09:34:07

C

2200

49.6

09:36:42

MS

1900

29.46

09:36:51

MS

2100

29.52

09:36:59

MS

3200

30.02

09:32:47

IBM

6800

174.97

09:35:26

IBM

5400

175.23

09:34:16

C

1300

50.76

09:34:26

C

2500

50.32

09:38:12

C

8800

51.29

transpose(t);
timestamp->[09:34:07,09:36:42,09:36:51,09:36:59,09:32:47,09:35:26,09:34:16,09:34:26,09:38:12]
sym->[C,MS,MS,MS,IBM,IBM,C,C,C]
qty->[2200,1900,2100,3200,6800,5400,1300,2500,8800]
price->[49.6,29.46,29.52,30.02,174.97,175.23,50.76,50.32,51.29]

例4. X是一个字典。

$ z=dict(`id`val,[`a`b`c,1 2 3]);
$ z;
val->[1,2,3]
id->[a,b,c]

$ transpose(z);

val

id

1

a

2

b

3

c