擅长:python、mysql、java
<p>如果这个问题是关于二进制一系列数字的具体问题,其中<code>absth</code>是每个bin的上限(bar最后一个没有上限),那么我可能会这样写:</p>
<pre><code>PROGRAM test
IMPLICIT NONE
INTEGER :: ix
INTEGER, DIMENSION(5) :: absth = [1, 2, 3, 4, 5]
REAL, DIMENSION(9) :: vals = [.1, .2, .5, 1.2, 3.5, 3.7, 16.8, 19.8, 135.60]
INTEGER, DIMENSION(SIZE(absth)+1) :: bins
bins = 0
DO ix = 1, SIZE(bins)-1
bins(ix) = COUNT(vals<absth(ix))
END DO
bins(ix) = COUNT(vals)
bins = bins-EOSHIFT(bins,-1)
WRITE(*,*) 'bins = ', bins
! which writes 3 1 0 2 0 3
END PROGRAM test
</code></pre>
<p>然后,当我对逻辑是正确的感到高兴时,我会把它转换成一个函数,并添加一些错误检查。在</p>
<p>如果问题更一般,并且问到什么是Fortran(90后)惯用的方法来重现Python的<code>for-else</code>结构,这里也有答案。在</p>