将矩阵转换为矢量

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将矩阵转换为矢量相关的知识,希望对你有一定的参考价值。

这可能更多是数学上的问题,但这是在代码中使用的。

假设您有N x N网格或矩阵。如果您想以某种方式“拉伸”它,则将其转换为各种数组,这样,每个元素就可以像矢量一样位于彼此的右边或左边。但是您想继续通过其原始引用来引用每个元素,即row和col。您要做的是将向量中的索引除以N。它的行将是index // N,列将是索引%N。

我的问题是:如果网格为N x M,从而得到大小为N * M的数组,您将如何获得网格中每个元素的相应位置呢? ?

答案

此“伸展”称为展平。这几乎总是按行或列的顺序进行。主要行又称为C样式,主要列又称为Fortran样式。

enter image description here

假设您使用行优先顺序来展平M x N矩阵,其中M是行数,而N列数是行优先顺序的正确转换表达式是:

col = i % N
row = i / N
-----------
i = row*N + col

对于列主要订单,它们是:

col = i / M
row = i % M
-----------
i = col*M + row

两者都假设icolrow的索引从零开始,以及截断除法。

以上是关于将矩阵转换为矢量的主要内容,如果未能解决你的问题,请参考以下文章

我需要将我的数组样式的邻接矩阵转换为矢量样式(使其看起来更好)

将大矢量图像转换为二进制矩阵的快速方法

使用R中的稀疏矩阵从矢量中提取元素,而不转换为密集矩阵

利用矩阵进行坐标系转换

PIE-Basic 栅格矢量化

我如何矢量化矩阵/输入,以便scipy.optimize.minimize可以使用它?