E017

向量中的view()函数,为向量的视图,支持关系运算和逻辑运算表达式。

 

#include "stdafx.h"

#include "orsciJWVCL.h"
#include "orsciVM.h"
using namespace orsci;
using namespace orsci::vmt;


int main()
{
{
vdouble x;
x = "-5:10, 7, 8";
cout << x << endl; //-5,-4,...,8, 9, 10, 7, 8
vdouble y = x.view("0:4"); //获得0到4之间的数据向量。
cout << y << endl; //-5 -4 -3 -2 -1
y = x.view("3, 2, 1, 3, 6");
cout << y << endl; //-2 -3 -4 -2 1
cout << x.view(find(x, GT(0))) << endl; //返回大于零的向量。首先find(...)找到索引,然后利用索引构成向量试图。
cout << x.view(find(x, BETWEEN(3, 7))) << endl; //返回处于3和7之间的数据向量。
vint index = find(x, AND(BETWEEN(3, 7), NoEQU(5)));
cout << x.view(index) << endl; //利用索引返回向量。结果为:3 4 6 7 7
vdouble greatZero = x.view(find(x, GT(0))); //大于零的所有元素。
cout << greatZero << endl; //结果:1 2 3 4 5 6 7 8 9 10 7 8

//向量翻转
cout << "x_1 = " << x << endl;
reverse_inplace(x.view(find(x, BETWEEN(3, 7)))); //对于3到7之间的数据进行翻转
cout << "x_2 = " << x << endl;
reverse_inplace(x);
cout << "x_3 = " << x << endl;

}
return 0;
}

输出

(一)程序运行结果

-5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 8 9 10 7 8
-5 -4 -3 -2 -1
-2 -3 -4 -2 1
1 2 3 4 5 6 7 8 9 10 7 8
3 4 5 6 7 7
3 4 6 7 7
1 2 3 4 5 6 7 8 9 10 7 8
x_1 = -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 8 9 10 7 8
x_2 = -5 -4 -3 -2 -1 0 1 2 7 7 6 5 4 8 9 10 3 8
x_3 = 8 3 10 9 8 4 5 6 7 7 2 1 0 -1 -2 -3 -4 -5

(二)说明:

(1)vdouble、vint等向量都支持带有关系运算和逻辑运算的复杂表达式形式,例如sum()、count、find()、minv()、maxv()、mean()、var()、var_pop()、stddev()、stddev_pop()等。

(2)向量,请参看书籍:姜维. 《数据分析与数据挖掘》、《数据分析与数据挖掘实践》

(6)orsci包支持向量和矩阵计算,可下载配套软件orsci-art应用。

书籍 姜维. 《数据分析与数据挖掘》、《数据分析与数据挖掘实践》
软件 orsci-art开发包(C++语言、Delphi语言和C语言)。