在Fortran数组中查找第一个和最后一个正值

鲍勃·萨卡门托

我有一个整数数组。几个值是零,至少有几个大于零。我想在数组中找到第一个和最后一个正值的位置。当然,这可以通过循环来完成。但是,对于现代的Fortran阵列功能,我认为必须有一些更紧凑,更优雅的产品。但是什么都没来。有人知道这样做的好方法吗?

皮埃尔·德·布尔

使用Fortran 2008功能findloc是可能的。

首先,您需要转换值,以便所有正值都具有相同的值(如findloc找到指定值)。我已经sign为此使用了,所以所有正值都等于1

findloc(data, 1)返回第一个正值(如果您只有-1,+ 1值),findloc(data, 1, back=.true.)最后一个。下面的示例程序。

program find_positive
  implicit none

  integer, allocatable :: data(:)

  data = [-3,  3,  0,  2, -3]
  write(*,*) data
  data = sign(1, data)
  write(*,*) data

  write(*,*) findloc(data, 1)
  write(*,*) findloc(data, 1, back=.true.)

end program find_positive

我已经在Intel Fortran 2018上对此进行了测试。gfortran仅包含了该功能,但我的gfortran(8.2.0)版本尚没有此功能。

PS:不知道您所需要的性能,但是功能存在:-)

编辑:High Performance Mark建议的较短版本

program find_positive
  implicit none

  integer, allocatable :: data(:)

  data = [-3,  3,  0,  2, -3]
  write(*,*) data

  write(*,*) findloc(sign(1, data), 1)
  write(*,*) findloc(sign(1, data), 1, back=.true.)

end program find_positive

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

选择数组中N个均匀间隔的元素,包括第一个和最后一个

在不是NaN的列中查找第一个和/或最后一个值的索引

删除数组中的第一个和最后一个元素

NumPy数组中的第一个和最后一个元素

在Python列表中查找某个值的第一个和最后一个索引

ArrayList查找第一个和最后一个元素

查找上个月的第一个和最后一个日期

Android RecyclerView查找ItemDecoration的第一个和最后一个视图

Python-查找第一个和最后一个白色像素坐标

查找数组的第一个和最后一个结构

查找每月sql的第一个和最后一个工作日

在列中查找第一个和最后一个值,然后获取其旁边的值

查找数据集SQL中ID出现的第一个和最后一个日期

查找大于阈值的NumPy数组的第一个和最后一个元素

在Python列表中查找元素的第一个和最后一个出现的最佳方法是什么?

在具有匹配属性的列表中查找第一个和最后一个列表

从解析的数组中获取第一个和最后一个日期

Matlab:查找向量中元素的第一个和最后一个出现?

返回数组中的第一个和最后一个值

查找升序列表中降序的第一个和最后一个数字

在数组php中查找第一个和最后一个匹配序列

查找数组中的第一个、最后一个和中间值。返回最大的一个

在一行中查找具有特定值的第一个和最后一个条目

使用递归查找列表的第一个和最后一个元素

在R中查找条纹的第一个和最后一个日期

忽略数组中的第一个和最后一个数字

从数组数组中查找每天的第一个和最后一个时间戳

查找排序数组中元素的第一个和最后一个位置

如何从数组中获取最多 3 个第一个和最后一个项目