diff --git a/base/multidimensional.jl b/base/multidimensional.jl index 165927998dc2c3..5be17b3bf52280 100644 --- a/base/multidimensional.jl +++ b/base/multidimensional.jl @@ -1466,6 +1466,11 @@ end ## Permute array dims ## +""" + permutedims(v::AbstractVector) + +Reshapes vector `v` into a `1 × length(v)` row matrix. +""" permutedims(v::AbstractVector) = reshape(v, (1, length(v))) function permutedims(B::StridedArray, perm = (2,1)) diff --git a/base/permuteddimsarray.jl b/base/permuteddimsarray.jl index fd875a644360d8..7690c5ccb4b513 100644 --- a/base/permuteddimsarray.jl +++ b/base/permuteddimsarray.jl @@ -77,11 +77,11 @@ end @inline genperm(I, perm::AbstractVector{Int}) = genperm(I, (perm...,)) """ - permutedims(A, perm) + permutedims(A::AbstractArray, [perm = (2,1)]) Permute the dimensions of array `A`. `perm` is a vector specifying a permutation of length -`ndims(A)`. This is a generalization of transpose for multi-dimensional arrays. Transpose is -equivalent to `permutedims(A, [2,1])`. +`ndims(A)`. This is a generalization of matrix transposition for multi-dimensional arrays. +The value of `perm` defaults to `(2,1)` for transposing the elements of a matrix See also: [`PermutedDimsArray`](@ref). @@ -108,7 +108,7 @@ julia> permutedims(A, [3, 2, 1]) 6 8 ``` """ -function Base.permutedims(A::AbstractArray, perm) +function Base.permutedims(A::AbstractArray, perm = (2,1)) dest = similar(A, genperm(indices(A), perm)) permutedims!(dest, A, perm) end diff --git a/test/arrayops.jl b/test/arrayops.jl index 809a65bdf26181..350db9bf26b0bc 100644 --- a/test/arrayops.jl +++ b/test/arrayops.jl @@ -577,6 +577,12 @@ end @test isequal(A,permutedims(permutedims(A,perm),invperm(perm))) @test isequal(A,permutedims(permutedims(A,invperm(perm)),perm)) end + + m = [1 2; 3 4] + @test permutedims(m) == [1 3; 2 4] + + v = [1,2,3] + @test permutedims(v) = [1 2 3] end @testset "circshift" begin