如何将 N-D 数组的最后两个维度作为 2D 数组?

Posted

技术标签:

【中文标题】如何将 N-D 数组的最后两个维度作为 2D 数组?【英文标题】:How do I get the two last dimensions of an N-D array as a 2D array? 【发布时间】:2011-08-08 20:52:04 【问题描述】:

我在 MATLAB 中有一个 3D 数组,带有 size(myArray) = [100 100 50]。现在,我想得到一个特定的层,由 first 维度中的索引指定,以二维矩阵的形式。 我试过myMatrix = myArray(myIndex,:,:);,但这给了我一个带有size(myMatrix) = [1 100 50]的3D数组。

如何告诉 MATLAB 我对第一个维度不感兴趣(因为只有一层),所以它可以简化矩阵?

注意:我还需要对第二个索引执行此操作,渲染 size(myMatrix) = [100 1 50] 而不是所需的 [100 50]。解决方案应该适用于这两种情况,最好也适用于三维。

【问题讨论】:

【参考方案1】:

使用squeeze 函数,该函数会删除单一维度。

示例:

A=randn(4,50,100);
B=squeeze(A(1,:,:));
size(B)

ans =

    50   100

这是通用的,您不必担心要索引的维度。所有单例维度都被挤出。

【讨论】:

【参考方案2】:
reshape(myArray(myIndex,:,:),[100,50])

【讨论】:

【参考方案3】:

squeezereshapepermute 可能是处理 N-D 矩阵时最重要的三个函数。举个例子如何使用第三个功能:

A=randn(4,50,100);
B=permute(A(1,:,:),[2,3,1])

【讨论】:

以上是关于如何将 N-D 数组的最后两个维度作为 2D 数组?的主要内容,如果未能解决你的问题,请参考以下文章

如何展平 numpy 数组的最后两个维度? [复制]

使用 n-d numpy 数组作为索引对 Panda 的数据帧进行分层索引

如何对 numpy 数组进行 n-D 距离和最近邻计算

如何在 Numpy 中“压缩”几个 N-D 数组?

如何将2D数组作为参数从C#传递给python

如何使用嵌套的 for 循环将两个 2d(倾斜)数组相加?