spe*_*ool 14 wolfram-mathematica
在操纵矩阵时,通常可以方便地改变它们的形状.例如,将N x M大小的矩阵转换为长度为NX M的向量.在MATLAB中,存在一个重塑函数:
RESHAPE(X,M,N)返回M-by-N矩阵,其元素从X列中逐列获取.如果X不具有M*N个元素,则会产生错误.
在矩阵和向量之间进行转换的情况下,我可以使用Mathematica函数Flatten,它利用Mathematica的嵌套列表表示矩阵.作为一个简单的例子,假设我有一个矩阵X:
使用Flatten [X]我可以得到向量{1,2,3,...,16}.但更有用的是类似于应用Matlab的重塑(X,2,8),这将产生以下矩阵:
只要维度等于N*M,这将允许创建任意矩阵.据我所知,没有内置任何东西让我想知道是否有人没有编写自己的重塑功能.
ken*_*ytm 19
Reshape[mtx_, _, n_] := Partition[Flatten[mtx], n]
Run Code Online (Sandbox Code Playgroud)
小智 5
Reshape[list_, dimensions_] :=
First[Fold[Partition[#1, #2] &, Flatten[list], Reverse[dimensions]]]
Run Code Online (Sandbox Code Playgroud)
用法示例:
In: Reshape[{1,2,3,4,5,6},{2,3}]
Out: {{1,2,3},{4,5,6}}
Run Code Online (Sandbox Code Playgroud)
这适用于任意深度的数组。
归档时间: |
|
查看次数: |
9313 次 |
最近记录: |