有像矩阵一样
ma = [[0.343, 0.351, 0.306], [0.145, 0.368, 0.487]]
Run Code Online (Sandbox Code Playgroud)
我想得到一个像这样的矢量:
[0.343, 0.145, 0.351, 0.368, 0.306, 0.487]
Run Code Online (Sandbox Code Playgroud)
试图得到它,我正在使用numpy,reshape但它不起作用.
a = np.array(ma)
>>> print a.shape
(2, 3)
Run Code Online (Sandbox Code Playgroud)
但我得到:
c = a.reshape(3, 2, order='F')
>>> print c
array([[ 0.343, 0.368],
[ 0.145, 0.306],
[ 0.351, 0.487]])
Run Code Online (Sandbox Code Playgroud)
对于任何矩阵大小,最好的方法是什么?我的意思是,例如,如果矩阵不是平方的:
[[0.404, 0.571, 0.025],
[0.076, 0.694, 0.230],
[0.606, 0.333, 0.061],
[0.595, 0.267, 0.138]]
Run Code Online (Sandbox Code Playgroud)
我想得到:
[0.404, 0.076, 0.606, 0.595, 0.571, 0.694, 0.333, 0.267, 0.025, 0.230, 0.061, 0.138]
Run Code Online (Sandbox Code Playgroud) 我想在arma::mat大小为M x N和arma::vec大小为MN(这是矩阵的列主线性化)之间来回切换.
我可以轻松地从矩阵到矢量使用arma::vectorise,即
arma::vec vector = arma::vectorise(matrix);
Run Code Online (Sandbox Code Playgroud)
但是,我找不到一个简单的方法去反过来.我想在矩阵的第一列中插入向量的前M个值,在第二列中插入第二个M值,依此类推.有没有办法有效地这样做?
如果我有一个包含3行和5列的数组,如下所示:
int arr[3][5]={0};
Run Code Online (Sandbox Code Playgroud)
现在我想输入一些数字,所以我喜欢这样:
int arr[3][5] ={10,8,9}
Run Code Online (Sandbox Code Playgroud)
现在数组设置如下:
10 8 9 0 0
0 0 0 0 0
0 0 0 0 0
Run Code Online (Sandbox Code Playgroud)
但我想要的是,实际上数组中的第一个列元素设置如下:
10 0 0 0 0
8 0 0 0 0
9 0 0 0 0
Run Code Online (Sandbox Code Playgroud)
我如何交换或更改数组顺序是这样的?
我正在为我的项目编写 3D 数学库,我想知道 Rust 是列专业还是行专业?例如,我有一个二维数组作为矩阵,我想将它提供给 C 库(如 OpenGL 或 Vulkan),对于这些库,拥有一个紧密排列的列主数组很重要。
multidimensional-array rust row-major-order column-major-order