在GNU Octave中,我希望能够从矩阵中删除特定列 . 为了普遍性 . 我还希望能够从矩阵中删除特定的行 .
假设我有这个:
mymatrix = eye(5)
mymatrix =
Diagonal Matrix
1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
0 0 0 1 0
0 0 0 0 1
我想删除第2列和第4列,但是当我删除第2列时,第4列的位置已经移到第3列,这让我头疼 . 一定有更好的方法!
4 回答
GNU Octave delete Columns 2 and 4 from a Matrix
打印:
GNU Octave delete Rows 2 and 4 from a Matrix:
打印:
Time complexity
GNU Octave用于切片和广播的CPU复杂度是一个快速线性时间
O(n * c)
,其中n是行数,c是保留的常数行数 . 它是C级单核矢量化但不是并行的 .Memory complexity
工作内存复杂度是线性的:
O(n * 2)
C对两个对象进行克隆,遍历每个元素,然后删除原始对象 .唯一的时间速度将是一个问题是,如果你的矩阵是不切实际的宽,高,或有多个维度,吹掉你的快速内存,速度受磁盘和内存之间的传输速度限制 .
如果您不知道确切的列数或行数,可以使用神奇的“结束”索引,例如:
这也允许您从矩阵中切割行或列,而无需将其重新分配给新变量 .
这样做的相反方法:
如何删除八度中的多个列:
如何删除第2列和第4列:
图说: