使用 section 方法搜索奇数索引

Search for odd indices using the section method

我不明白如何使用 section 方法实现对偶数元素的搜索。

我搜索了奇数元素,但我需要找到偶数元素

我需要它输出2 4 6 8,但我的程序输出1 3 5 7 9

program main
  implicit none
  
  integer, DIMENSION(3, 3) :: array = reshape((/ 1, 2, 3, 4, 5, 6, 7, 8, 9 /), shape(array))
  integer                  :: i = 0
  integer, allocatable     :: B(:)
  
  B = [(Array(::2,i), i=1, 3)]
  print *, B
end program main

如果您对索引为奇数的元素感兴趣,您需要

B = [(Array(modulo(i,2)+1::2, i), i=1, 3)]
i为奇数时

modulo(i,2)+12,当i为偶数时1。这意味着对于具有奇数 i 的列,您 select 从第二个元素开始的所有其他元素,对于具有偶数 i 的列,您 select 从第一个元素开始的所有其他元素元素.

相反,如果您对 select 任意数组中的奇数值感兴趣,则不能使用简单的切片来执行此操作,而是需要一个条件过滤器。例如,

B = [integer::]
do i=1,3
  do j=1,3
    if (modulo(Array(j,i),2)==0) then
      B = [B, Array(j,i)]
    endif
  enddo
enddo