GNU Octave数据加载移动操作
GNU Octave移动加载数据
如果你有一个机器学习问题,你怎样把数据加载到Octave中?
- 怎样把数据存入一个矩阵?
- 如何对矩阵进行相乘?
- 如何保存计算结果?
- 如何移动这些数据并用数据进行操作?
这里构建一个3行2列的矩阵,Octave中的size()命令返回矩阵的尺寸
设置sz=size(A),其实第一个元素是3,第二个元素是2,对应A的行与列,表示矩阵sz维度
你也可以再将size()命令进行size进行计算,返回sz矩阵的行列,即1行2列,也就是1x2矩阵。
这里可以通过size命令size(A,1),计算A矩阵的第一个元素,返回A矩阵的第一个维度的尺寸,也就是A矩阵的行数。
同样,通过size命令size(A,2),计算A矩阵的第二个元素,返回A矩阵的第二个维度的尺寸,也就是A矩阵的列数。
对于向量与矩阵,除了size()命令之外,还可以使用length()进行计算
由于矩阵A是3x2的矩阵,最大的维度应该是3,因此该命令会返回3
类似地,若一个1x5的矩阵,使用length()将会返回5
如何在系统中加载数据和寻找数据
通过who命令,显示出目前在octave工作空间中的所有变量
另外可以通过whos命令,对所有变量进行更详细地进行查看
可以使用clear命令,对工作空间中的变量进行删除
显示featuresX
显示priceY
另外一个问题是,我们怎么储存数据?
这里可以设变量V = priceY(1:10),作用是将向量Y的前10个元素存入V中
假如我们想把它存入硬盘,你们可以使用save filename.mat V
save会将变量V存成一个叫指定名称,以.mat为后缀的文件
这个命令会把数据按照二进制形式储存,或者说是更压缩的二进制形式,因此如果变量V是很大的数据,那么压缩幅度也更大,
占用空间也会更小。
如果你想把数据存成别人能看懂的形式,那么可以使用下面的命令:
下面继续回到操作数据
假设矩阵A还是之前那个,那个根据(x,y)的索引值,即可打印出对应的x行y列的值。
使用A(:,2),这将返回矩阵A中第二行的所有元素,其中冒号":"表示该行或者该列的所有元素。
使用A(2,:),这将返回矩阵A中第二列的所有元素
除此之外,这里还可以取A矩阵的第一个索引值为1或3的元素,也就是说取得的是A矩阵的第一行和第三行的每一列,
其中冒号表示的是取这两行的每一列元素
同样地,这里可以重新对A矩阵的第二列进行赋值,实际上是取出了A取值的第二列,再将一个列向量赋给它,因此第一列保持不变。
接下来,可以把A设为A = [A,[100; 101; 102]],这样做的结果是在原矩阵的右边附加了一个新的列矩阵,
就是把A矩阵设置为原来的A矩阵再从右边附上一个新添加的列矩阵。
值得一提是,还有一个小技巧,就是如果你输入A(😃,这是一个很特别的语法结构,意思是A中的所有元素放入一个单独的列元素,
这样我们就得到一个9x1的向量,这些元素都是A中的元素排列起来。
再来几个例子:
继续将以矩阵A为例,如果再设一个B为[11 12; 13 14; 15 16],我们可以新建一个矩阵C = [A B],
这个意思就是吧这两个矩阵直接连在一起,矩阵A在左边,矩阵B在右边,这样组成了C矩阵。
另外顺便说一下,这个[A B]命令跟[A,B]是一样的,这两种写法的结果是相同的。
同样地,我们还可以设C = [A; B],这里的分号表示把分号后面的内容放在下面。
因此[A;B]的作用还是合并两个矩阵,不同的是,这里是进行矩阵的上下排列,从而C就是一个6x2的矩阵
以上,通过上面的讨论和演示,Octave能够很方便地很快速地帮助我们组合复杂的矩阵以及数据进行移动。