take
语法
take(X, n)
参数
X 可以是标量、向量、元组、矩阵或表。
n 是一个整数标量或向量。
详情
如果 X 是标量,则 n 必须是标量,返回由 n 个 X 组成的向量。
如果 X 是向量/元组:
n 是标量:从 X 中循环地依次取值,共取 n 个值。结果是一个向量。n 是正数时,从左到右取数,n 是负数时,从右到左取数。
n 是向量:n 的长度必须和 X 相同。从 X 中依次取出 n[i] 个 X[i]。当 n[i] <=0 时,不会取 X[i]。结果是一个向量。
如果 X 是矩阵/表:
n 是标量:从 X 中循环地依次逐行取值,共取 n 行。结果是一个矩阵/表。n 是正数时,从上到下取数,n 是负数时,则从下到上取数。
n 是向量:n 的长度必须和 X 的行数相同。从 X 中依次取出 n[i] 个第 i 行的元素。当 n[i] <=0 时,不会取第 i 行元素。结果是一个矩阵/表。
例子
$ take(10,5);
[10,10,10,10,10]
$ x=`IBM`C`AAPL`BABA;
$ take(x,10);
["IBM","C","AAPL","BABA","IBM","C","AAPL","BABA","IBM","C"]
// sequentially and iteratively take 10 elements from vector x
$ x=3 5 4 6 9;
$ take(x,3);
[3,5,4]
$ x=1..3;
$ x.take(10);
[1,2,3,1,2,3,1,2,3,1]
$ take(1 2 3, 10);
[1,2,3,1,2,3,1,2,3,1]
$ take(1,10);
[1,1,1,1,1,1,1,1,1,1]
// an efficient way to generate a vector with default values.
$ x=take(1,0);
// return an empty INT VECTOR
$ x;
[]
$ typestr x;
FAST INT VECTOR
$ x=1..12$3:4;
$ take(x,2);
[1,2]
$ take(x,-2);
[11,12]
$ take(1..3,2 0 2)
[1,1,3,3]
$ m=matrix(1 2 3, 4 5 6)
$ take(m,5)
col1 col2
1 4
2 5
3 6
1 4
2 5
$ take(m, 0 2 1)
col1 col2
2 5
2 5
3 6
$ t=table(1 2 3 as a, 4 5 6 as b)
$ take(t,-4)
a b
3 6
1 4
2 5
3 6
$ take(t, -2 2 1)
a b
2 5
2 5
3 6