我有2个和3个维度的两个Fortran数组,比如a(nx,ny)和b(nx,ny,nz)。在数组a中,我需要找出满意的点,比如值>然后,我需要在数组b中找到具有相同索引x和y的向量的a。什么是最简单快捷的方法?这两个数组很大,我不想一个元素搜索一个元素。希望我能清楚地解释我的问题!谢谢!
答案 0 :(得分:0)
我不确定这是最好的方法,但这就是我要做的事情:
将where
子句放在do
循环中的z值上。如果您不想每次都重新计算得分,您可以先将有效索引的2D地图放入逻辑数组中:
program indices
implicit none
integer, parameter :: nx = 3000, ny = 400, nz = 500
integer, dimension(nx, ny) :: a
integer, dimension(nx, ny, nz) :: b
logical, dimension(nx, ny) :: valid_points
integer :: x, y, z
do y = 1, ny
do x = 1, nx
a(x, y) = x - y
end do
end do
valid_points = (a > 0)
do z = 1, nz
where(valid_points)
b(:, :, z) = z
else where
b(:, :, z) = 0
end where
end do
end program indices