重塑Fortran阵列

时间:2018-09-12 19:33:48

标签: fortran

我有一个名为m by 1的巨大m数组(X非常大),这是Fortran matmul操作的结果。我的问题是将显然是2D数组存储到大小为Y的1D数组m中。

我尝试使用Y = reshape(X, [[2]]),结果得到一些元素NaN。谁能指出我要使用Fortran命令来快速进行操作。 X的元素可以为零或非零。

1 个答案:

答案 0 :(得分:3)

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

形状为[2]的数组是具有两个元素的1级数组。您想要具有m个元素的1列数组:

Y = RESHAPE(X, [m])

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

Y = X(:,1)

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


当您拥有Y=reshape(X,[2])时,如果Y不可分配且大小不为2,则您可能会遇到问题,实际上可能会导致编译器决定--因为它很有权这样做- -给您几个NaN

还要注意,您may not need to reshape阵列,取决于您以后打算如何使用它。