首页 > 解决方案 > 重塑 Fortran 数组

问题描述

我有一个巨大的m by 1数组(m非常大)X,这是 Fortranmatmul操作的结果。我的问题是将这个明显的 2D 数组存储到Ysize 的 1D 数组中m

我试过了Y = reshape(X, [[2]]),结果是一些元素NaN。谁能给我指点 Fortran 命令来快速完成它。的元素X可以是零或非零。

标签: fortran

解决方案


reshape(或带有关键字的那个)的第二个参数shape=是函数结果的形状。在您的通话中,您已请求 shape [2]

具有形状的[2]数组是具有两个元素的 rank-1 数组。您想要一个包含m元素的 rank-1 数组:

Y = RESHAPE(X, [m])

现在,在这种情况下,无需使用 reshape:

Y = X(:,1)

其中右侧是 X 的 rank-1 数组部分。


当您拥有Y=reshape(X,[2]), if Yis not allocatable 且大小不为 2 时,您遇到的问题可能确实会导致您的编译器决定——因为它完全有权这样做——给你几个NaNs。

另请注意,您可能不需要重塑阵列,具体取决于您以后打算如何使用它。


推荐阅读