问题标签 [column-major-order]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
5610 浏览

python - NumPy 中行与列操作的性能

几篇文章表明 MATLAB 更喜欢列操作而不是行操作,并且根据您对数据的布局,性能可能会有很大差异。这显然是因为 MATLAB 使用优先顺序来表示数组。

我记得读过 Python (NumPy) 使用优先顺序。有了这个,我的问题是:

  1. 在使用 NumPy 时,是否可以期待类似的性能差异?
  2. 如果上面的答案是肯定的,那么有哪些例子可以突出这种差异
0 投票
4 回答
1955 浏览

python - Python行主要到列主要顺序向量

有一个像这样的矩阵

我想得到一个像这样的向量:

numpy为了尝试得到它,我正在使用reshape但它不起作用。

但我得到:

对于任何矩阵大小,最好的方法是什么?我的意思是,例如,如果矩阵不是平方的:

我想得到:

0 投票
4 回答
930 浏览

c - 列与行的二维数组初始化

如果我有一个 3 行 5 列的数组,如下所示:

现在我想输入一些数字,所以我喜欢这样:

现在数组设置如下:

但我想要的是实际上数组中的第一列元素设置如下:

我如何交换或更改数组顺序是这样的?

0 投票
1 回答
275 浏览

matlab - 如何从 Matlab 中的行主向量中获取矩阵?

我有以下矩阵:

我现在将矩阵转换为向量,但以行为主。这给出了以下向量:

现在我想把这个向量变成和上面一样的矩阵。问题是这reshape(matrix,[3,5])不起作用,因为 Matlab 以列为主。

如何有效地做到这一点(对于大型矩阵)?

0 投票
1 回答
2335 浏览

multidimensional-array - Rust 多维数组行是否主要且紧凑?

我正在为我的项目编写一个 3D 数学库,我想知道 Rust 是列专业还是行专业?例如,我有一个二维数组作为矩阵,我想将它提供给 C 库(如 OpenGL 或 Vulkan),对于这些库来说,拥有一个紧凑的列主数组很重要。

0 投票
1 回答
2553 浏览

c++ - Armadillo - 从列向量中的值填充矩阵

我想在arma::mat大小 M x N 和arma::vec大小 MN 之间来回切换(这是矩阵的主要列线性化)。

我可以很容易地从矩阵到向量使用arma::vectorise,即

但是,我找不到一种简单的方法来反过来。我想在矩阵的第一列中插入向量的第一个 M 值,在第二列中插入第二个 M 值,依此类推。有没有办法有效地做到这一点?

0 投票
1 回答
750 浏览

r - 将矩阵转换为列主要顺序格式

我正在使用Rsymphony并决定使用CPLEX. 我正在研究cplexAPIR 中的内容,宁愿使用我现有的结构来构建约束矩阵。文档说 API 采用列主要顺序格式的约束矩阵,只有非零元素。所以我需要一种方法来(优雅地,我希望)将矩阵转换为这种形式。

例如:

3.2 创建和求解混合整数规划 (MIP) 问题 下面,将创建和求解一个示例 MIP: ...

受制于:

约束

目前,这是作为矩阵实现的

从文档中,我需要以下元素。

约束矩阵以列主要顺序格式传递。这里要小心:所有索引都从 0 开始!开始行索引。

您会注意到,从左上角向下工作是这样工作的。在第一个位置 (0),第二列从第三个非零元素开始,第三列从第五个元素开始,以此类推。

每行的非零元素数。

同样,我会说的是专栏。

列索引。

这是每个非零元素的列索引。

非零元素。

我很难找到一种方法来完成这项工作。

我知道我可以通过以下方式val轻松创建:

我可以通过以下方式cnt轻松创建:

感谢@42-

现在为beg.

重述片段,

beg是沿 中非零元素的位置计数的索引val。所以 inmat[1,1]是 中的第一个非零元素mat和 中的第一个 (0) 元素valmat[,2]第一个非零元素是 中的第三个元素 (2 ) val。在mat[,3]第一个非零元素中是 的第六 (5) 个元素,valmat[,4]第一个非零元素中是 的第八 (7) 个元素val

清如泥?我也是。

0 投票
1 回答
58 浏览

arrays - 在 MATLAB 中,对于 2D 数组,我如何获得将首先迭代另一个维度的索引

我有一个算法,它使用单个索引填充 2x3 子图数组i=1:6

根据文件,

subplot(m,n,p)将当前图窗划分为 m×n 网格,并在 p 指定的位置为子图创建轴。MATLAB® 按行对其子图进行编号,这样第一个子图是第一行的第一列,第二个子图是第一行的第二列,依此类推。

因此,当使用 迭代 2x3 子图数组时i=1:6,将导致以下行主要顺序:

如果我想以列优先顺序填充子图,我必须将我的索引 1 2 3 4 5 6 转换为 1 4 2 5 3 6。

我怎样才能做到这一点?

0 投票
1 回答
503 浏览

arrays - 在 Fortran 中使用 Gatherv 处理二维数组

我在不同的进程上有许多大小 = (2,9) 的二维数组,我想在根进程的大小 = (2*nProcs,9) 的全局数组中使用 MPI_Gatherv 将它们连接起来。为此,我正在尝试修改这篇文章:Sending 2D arrays in Fortran with MPI_Gather

但我真的明白他们在做什么,我的例子不起作用:

输出:

由于第一个进程的数组通过了很好我最好的猜测是,它与位移有关,但我无法修复它。

在上面提到的帖子中,他们创建了一个像这样的新类型:

MPI_Type_create_resized 做了什么,为什么有必要?

他们设置extent = localsize*charsize(不是localsize**2*charsize)和count = 1,但是子数组是3x3,而不是3x1。他们如何仍然发送 3x3 矩阵?

如何修复我的示例程序?

0 投票
2 回答
533 浏览

matlab - 置换矩阵在Matlab中将表示从列专业更改为行专业

我在 Matlab 中有一个二维数组需要转换为一维,而 Matlab 使用列主要表示进行转换。但是,我想使用双重随机矩阵将表示形式转换为行专业。

例如,我有以下二维数组:

如果我使用 reshape 在一维中表示它

我得到一个专栏主要代表:

但是,我想使用这样的置换矩阵:

这样我得到以下行主要表示:

通过做

我知道我可以通过这样做来获得 v2

但我特别关注生成置换矩阵以转换为行主要表示。

如果有人可以帮助我生成这个排列矩阵,那真的很有帮助。提前致谢!