gpp*_*ypy 1 arrays fortran elements
Fortran中是否有一个删除数组中特定元素的函数,这样删除时的数组会缩短删除的元素数量?
背景:我目前正在开展一个项目,其中包含一组人口,并对个人进行相应的描述(即年龄,死亡年龄等).
我使用的方法是遍历数组,找到我需要的元素,将它放在另一个数组中,然后释放前一个数组,在下一个时间步之前,在遍历子程序之前将这个数组移回数组再一次不需要的元素.
您可以使用PACK内部函数和内部赋值来创建一个数组值,该值由另一个数组中的选定元素组成.假设array是可分配的,并且要删除的元素由逻辑掩码提名,逻辑掩码logical_mask与原始值相同array:
array = PACK(array, .NOT. logical_mask)
Run Code Online (Sandbox Code Playgroud)
由其索引指定的单个元素的简洁语法是:
array = [array(:index-1), array(index+1:)]
Run Code Online (Sandbox Code Playgroud)
根据您的Fortran处理器,上述语句可能会导致编译器创建可能影响性能的临时值.如果这有问题,那么您将需要使用您描述的子程序方法.