我有一个名为m by 1
的巨大m
数组(X
非常大),这是Fortran matmul
操作的结果。我的问题是将显然是2D数组存储到大小为Y
的1D数组m
中。
我尝试使用Y = reshape(X, [[2]])
,结果得到一些元素NaN
。谁能指出我要使用Fortran命令来快速进行操作。 X
的元素可以为零或非零。
答案 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阵列,取决于您以后打算如何使用它。