矩阵的重构:
Reshape函数可以将一个多维数组拉伸为一维数组,或重构为指定大小的矩阵。
例如:
A:=Rand(3,6);
B:=Reshape(A);//B为拉伸的长度为18的一维数组
C:=Reshape(A,2,9);//产生2*9的矩阵
D:=Reshape(A,6,Array(“A”,“B”,“C”));//产生6行3列矩阵
E:=Reshape(A,array(“A”,“B”,“C”,“D”,“E”,“F”),array(“F1”,“F2”,“F3”));//全下标指定的方式产生矩阵。
F:=Reshape(A,3,3,2);//产生一个3*3*2的三维数组
ReIndex,
ReIndexCopy下标变换:这两模型可以修改数组的指定下标为新下标,区别在于Reindex直接修改原数组,而ReindexCopy不修改原数组,通过返回产生一个修改后的数组。
如:
A:=array("A":0,"B":1,"D":2,"E":3);
ReIndex(A,array("A":"A1","D":nil));
A的结果变为: array("A1":0,"B":1,"E":3);
参数array("A":"A1","D":nil)的含义是:将字符串下标"A"改为"A1",把字符串下标"D"删除。
如果我们要对多维数组进行处理,假定我们有:
A:=rand(10,array("A","B","D","E"); //初始化一个四列的二维矩阵
ReIndex(A,nil,array("A":"A1","D":nil));
第2个参数为nil表示对第一维的下标不进行变动,因此我们修改列"A"为"A1",并删除"D"列。
更多维的处理以此类推。
利用Reindex也可以做
下标的交换
例如:
A:=array(1,2,3,4,5);
reIndex(A,array(0:4,4:0));
A的结果为array(5,2,3,4,1);