使用 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)+1
为2
,当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
我不明白如何使用 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)+1
为2
,当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