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);
// output
[10,10,10,10,10]
x=`IBM`C`AAPL`BABA;
take(x,10);
// output
["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);
// output
[3,5,4]
x=1..3;
x.take(10);
// output
[1,2,3,1,2,3,1,2,3,1]
take(1 2 3, 10);
// output
[1,2,3,1,2,3,1,2,3,1]
take(1,10);
// output
[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;
// output
[]
typestr x;
// output
FAST INT VECTOR
x=1..12$3:4;
take(x,2);
// output
[1,2]
take(x,-2);
// output
[11,12]
take(1..3,2 0 2)
// output
[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