slice
语法
slice(obj, index)
或
slice(obj, rowIndex, [colIndex])
相当于obj[index]或obj[rowIndex, colIndex]
参数
New in version 2.00.9.7: obj 参数支持数组向量
obj 可以是数组向量、矩阵或表。
index, rowIndex 和 colIndex 可以是标量、向量或数据对,表示行或列的下标。如果 index, rowIndex 或 colIndex 为数据对,那么它表示下标的范围,上边界不包含在内。
详情
对于第一种用法:
如果obj是一个数组向量,
index是标量,返回指定的列,用向量表示。
index是向量,返回指定行组成的数组向量。
index是数据对,返回指定列组成的数组向量。
如果obj是一个矩阵,
index是标量,返回指定的列,用向量表示。
index是向量或数据对,返回指定列组成的子矩阵。
如果obj是一个表,
index是标量,返回指定的行,用字典表示。
index是向量或数据对,返回指定行组成的子表。
对于第二种用法:
如果obj是一个数组向量,
rowIndex和colIndex都是标量,返回指向行列的值,用向量表示。
rowIndex是标量,colIndex是数据对,返回由指定行列组成的数组向量。
rowIndex是数据对,colIndex是标量,返回由指定行列组成的向量。
rowIndex和colIndex都是数据对,返回由指定行列组成的数组向量。
如果obj是一个矩阵,
rowIndex和colIndex都是标量,返回指定行列的值,用标量表示。
rowIndex和colIndex中一个是标量,另一个是数据对,返回由指定行列组成的子矩阵。
rowIndex和colIndex都是向量或数据对,返回指定行列组成的子矩阵。
如果obj是一个表,
rowIndex和colIndex都是标量,返回指定行列的值,用标量表示。
rowIndex和colIndex中一个是标量,另一个是数据对,返回指定行列组成的子表。
rowIndex和colIndex都是向量或数据对,返回指定行列组成的子表。
请注意,index, rowIndex,collIndex 作为数组向量或矩阵的索引值或索引范围时,若其值不在 [0, size(X)-1] 内,则超出 [0, size(X)-1] 的值所对应的位置返回空值。
例子
例1. 矩阵
$ m=1..9$3:3
m.slice(0);
[1,2,3]
$ m.slice([0]);
#0 |
---|
1 |
2 |
3 |
$ m.slice(0:2);
#0 |
#1 |
---|---|
1 |
4 |
2 |
5 |
3 |
6 |
$ m.slice(0 2);
#0 |
#1 |
---|---|
1 |
7 |
2 |
8 |
3 |
9 |
$ m.slice(0,1);
4
$ m.slice(0 1,0 1);
#0 |
#1 |
---|---|
1 |
4 |
2 |
5 |
$ m.slice(1:2,1:2);
#0 |
---|
5 |
例2. 表
$ t=table(`A`B`C as sym,2018.01.01..2018.01.03 as date,10 48 5 as val)
t.slice(0);
val->10
date->2018.01.01
sym->A
t.slice([0]);
sym |
date |
val |
---|---|---|
A |
2018.01.01 |
10 |
$ t.slice(0 1);
sym |
date |
val |
---|---|---|
A |
2018.01.01 |
10 |
B |
2018.01.02 |
48 |
$ t.slice(0:1);
sym |
date |
val |
---|---|---|
A |
2018.01.01 |
10 |
$ t.slice(0,1);
2018.01.01
$ t.slice(0 1,0 1);
sym |
date |
---|---|
A |
2018.01.01 |
B |
2018.01.02 |
$ t.slice(1:2,1:2);
date |
---|
2018.01.02 |
例3. 数组向量
$ av =array(DOUBLE[], 0, 10).append!([1.0, 2.1 4.1 6.8, 0.5 2.2 2]);
$ av[1]
[,4.1,2.2]
$ av[1,1]
[4.1]
$ av[1:3,1:3]
[[4.1,6.8],[2.2,2]]