fortran - 重塑 Fortran 数组
问题描述
我有一个巨大的m by 1
数组(m
非常大)X
,这是 Fortranmatmul
操作的结果。我的问题是将这个明显的 2D 数组存储到Y
size 的 1D 数组中m
。
我试过了Y = reshape(X, [[2]])
,结果是一些元素NaN
。谁能给我指点 Fortran 命令来快速完成它。的元素X
可以是零或非零。
解决方案
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 Y
is not allocatable 且大小不为 2 时,您遇到的问题可能确实会导致您的编译器决定——因为它完全有权这样做——给你几个NaN
s。
另请注意,您可能不需要重塑阵列,具体取决于您以后打算如何使用它。
推荐阅读
- fabricjs - FABRICJS TEXT(调整边界框大小)
- c - 无法正确地将 uint64_t 转换为双精度。我错过了什么?
- angular - 如何绕过 auth0 登录进行 Angular 测试?
- scala - 将模拟对象注入伴随对象字段
- reactjs - 为什么需要 npm serve 或 express 服务器来将 create-react-app 生产构建部署到 heroku 云服务器?
- r - ggplot2 - 如何将比例标签添加到堆叠比例条形图?
- python - 检查熊猫数据框列中的值是否为整数,如果不是则将其写入列表
- php - 如何正确地将我的 PHP 文件链接到我的 CSS
- python - 如何确定字节是 utf-8 还是 utf-16
- python - 替换或交换 3 个列表以创建单个列表/数组