Manipulation
优质
小牛编辑
139浏览
2023-12-01
操纵功能是移位功能。 shift函数返回数组的形状不变,但移动元素。
Sr.No | 功能说明 |
---|---|
1 | cshift(array, shift, dim) 如果换档是正的,它通过向左的换档位置执行循环换档,如果是负的则向右执行循环换档。 如果数组是向量,则移位以自然的方式完成,如果它是更高等级的数组,则移位在沿维度暗的所有部分中。 如果缺少dim,则认为它是1,在其他情况下,它必须是1和n之间的标量整数(其中n等于数组的等级)。 参数shift是标量整数或等级n-1的整数数组,并且与数组的形状相同,除了沿着维度dim(由于较低的等级而被移除)。 因此,不同的部分可以在各个方向上移动并具有不同数量的位置。 |
2 | eoshift(array, shift, boundary, dim) 这是结束班次。 如果移位为正,则执行向左移位;如果移位为负,则执行向右移位。 移出的元素不是从边界中取出的新元素。 如果数组是向量,则移位以自然的方式完成,如果它是更高等级的数组,则所有部分的移位沿着维度暗淡。 如果缺少dim,则认为它是1,在其他情况下,它必须具有介于1和n之间的标量整数值(其中n等于数组的等级)。 如果数组具有等级1,则参数shift是标量整数,在另一种情况下,它可以是标量整数或等级n-1的整数数组,并且具有与数组数组相同的形状,除了沿着维度dim(被删除)因为排名较低)。 |
3 | transpose (matrix) 它转换矩阵,它是秩2的数组。它替换矩阵中的行和列。 |
例子 (Example)
以下示例演示了该概念 -
program arrayShift
implicit none
real, dimension(1:6) :: a = (/ 21.0, 22.0, 23.0, 24.0, 25.0, 26.0 /)
real, dimension(1:6) :: x, y
write(*,10) a
x = cshift ( a, shift = 2)
write(*,10) x
y = cshift (a, shift = -2)
write(*,10) y
x = eoshift ( a, shift = 2)
write(*,10) x
y = eoshift ( a, shift = -2)
write(*,10) y
10 format(1x,6f6.1)
end program arrayShift
编译并执行上述代码时,会产生以下结果 -
21.0 22.0 23.0 24.0 25.0 26.0
23.0 24.0 25.0 26.0 21.0 22.0
25.0 26.0 21.0 22.0 23.0 24.0
23.0 24.0 25.0 26.0 0.0 0.0
0.0 0.0 21.0 22.0 23.0 24.0
例子 (Example)
以下示例演示了矩阵的转置 -
program matrixTranspose
implicit none
interface
subroutine write_matrix(a)
integer, dimension(:,:) :: a
end subroutine write_matrix
end interface
integer, dimension(3,3) :: a, b
integer :: i, j
do i = 1, 3
do j = 1, 3
a(i, j) = i
end do
end do
print *, 'Matrix Transpose: A Matrix'
call write_matrix(a)
b = transpose(a)
print *, 'Transposed Matrix:'
call write_matrix(b)
end program matrixTranspose
subroutine write_matrix(a)
integer, dimension(:,:) :: a
write(*,*)
do i = lbound(a,1), ubound(a,1)
write(*,*) (a(i,j), j = lbound(a,2), ubound(a,2))
end do
end subroutine write_matrix
编译并执行上述代码时,会产生以下结果 -
Matrix Transpose: A Matrix
1 1 1
2 2 2
3 3 3
Transposed Matrix:
1 2 3
1 2 3
1 2 3