简述
下表描述了归约函数:
函数 |
描述 |
all(mask, dim) |
它返回一个逻辑值,指示掩码中的所有关系是否为 .true.,如果给出第二个参数,则仅返回所需的维度。 |
any(mask, dim) |
它返回一个逻辑值,指示掩码中的任何关系是否为 .true.,如果给出第二个参数,则仅返回所需的维度。 |
count(mask, dim) |
它返回一个数值,即掩码中为 .true. 的关系数,如果给出第二个参数,则仅返回所需的维度。 |
maxval(array, dim, mask) |
如果给出了第三个参数掩码中的关系,它返回数组数组中的最大值,如果给出第二个参数dim,则只返回所需的维度。 |
minval(array, dim, mask) |
如果给出了第三个参数掩码中的关系,它返回数组数组中的最小值,如果给出第二个参数 DIM,则仅返回所需的维度。 |
product(array, dim, mask) |
它返回数组数组中所有元素的乘积,如果给出了第三个参数掩码中的关系,则返回那些元素的乘积,如果给出第二个参数 dim,则仅返回所需的维度。 |
sum (array, dim, mask) |
如果给出了第三个参数掩码,它返回数组数组中所有元素的总和,如果给出第二个参数dim,则只返回所需的维度。 |
Example
以下示例演示了该概念:
program arrayReduction
real, dimension(3,2) :: a
a = reshape( (/5,9,6,10,8,12/), (/3,2/) )
Print *, all(a>5)
Print *, any(a>5)
Print *, count(a>5)
Print *, all(a>=5 .and. a<10)
end program arrayReduction
当上面的代码被编译并执行时,它会产生以下结果:
Example
以下示例演示了该概念:
program arrayReduction
implicit none
real, dimension(1:6) :: a = (/ 21.0, 12.0,33.0, 24.0, 15.0, 16.0 /)
Print *, maxval(a)
Print *, minval(a)
Print *, sum(a)
Print *, product(a)
end program arrayReduction
当上面的代码被编译并执行时,它会产生以下结果:
33.0000000
12.0000000
121.000000
47900160.0