2 arrays fortran matrix intel-fortran
例如我有数组(/ 1,3,4,5,7,9,11 /),如何删除它的第3个元素?我找不到这确实是一个阵列的功能,也没有我发现一个循环的优雅的解决方案,因为我不知道如何追加到一个数组(这意味着,新增一个元素前面定义的元素旁边.)
我想从数组中删除所有偶数元素......我知道只有一个元素.
我可以使用MINLOC找到它的索引,但我不知道如何从数组中删除一个元素.
让
a = (/1,3,4,5,7,9,11/)
Run Code Online (Sandbox Code Playgroud)
然后
pack(a,mod(a,2)/=0)
Run Code Online (Sandbox Code Playgroud)
将返回奇数元素a
.这与删除第3个元素并不完全相同,但您的问题表明删除偶数元素确实是您想要做的.
如果你宣布
integer, dimension(:), allocatable :: oddones
Run Code Online (Sandbox Code Playgroud)
然后
oddones = pack(a,mod(a,2)/=0)
Run Code Online (Sandbox Code Playgroud)
将离开oddones
包含奇怪的元素a
.您需要一个最新的编译器才能使用此自动分配.
请注意,在Fortran中,与任何理智的语言一样,数组具有固定大小,因此实际上不支持删除元素.但是,如果a
它本身就allocatable
可以使用表达式a
的lhs.让我们留给哲学家,无论a
在这个操作下是否保持不变.