当操作矩阵时,往往很方便地改变它们的形状。例如,要将N大小的矩阵转换为长度为N的向量,在MATLAB中存在一个整形函数:
RESHAPE( X,M,N)返回从X中取元素为列的M-by-N矩阵,如果X没有M*N元素,就会产生误差。
在矩阵和向量之间转换的情况下,我可以使用Mathematica函数扁平化,它利用Mathematica对矩阵的嵌套列表表示。作为一个简单的例子,假设我有一个矩阵X:

用FlattenX,我可以得到向量{1,2,3,...,16}。但是,更有用的是类似于应用Matlab的整形(X,2,8),从而产生以下矩阵:

这将允许创建任意矩阵,只要维数等于N*M,据我所知,没有任何东西能让我怀疑是否有人没有编码出他们自己的重塑函数。
发布于 2010-03-18 06:53:18
Reshape[mtx_, _, n_] := Partition[Flatten[mtx], n]发布于 2013-07-09 04:52:45
ArrayReshape正是这样做的。
发布于 2012-05-04 20:43:44
Reshape[list_, dimensions_] :=
First[Fold[Partition[#1, #2] &, Flatten[list], Reverse[dimensions]]]示例用法:
In: Reshape[{1,2,3,4,5,6},{2,3}]
Out: {{1,2,3},{4,5,6}}这适用于任意深度的数组。
https://stackoverflow.com/questions/2467961
复制相似问题