From 01732f62dea472465d8fe8a8e78a8b63237d88a3 Mon Sep 17 00:00:00 2001 From: Tim Holy Date: Mon, 19 Sep 2016 07:10:06 -0500 Subject: [PATCH] Support (c)transpose --- src/core.jl | 6 ++++++ test/core.jl | 13 +++++++++++++ 2 files changed, 19 insertions(+) diff --git a/src/core.jl b/src/core.jl index 917a4de..2c25433 100644 --- a/src/core.jl +++ b/src/core.jl @@ -264,6 +264,12 @@ function Base.permutedims(A::AxisArray, perm) p = permutation(perm, axisnames(A)) AxisArray(permutedims(A.data, p), axes(A)[[p...]]) end + +Base.transpose{T}(A::AxisArray{T,2}) = AxisArray(transpose(A.data), A.axes[2], A.axes[1]) +Base.ctranspose{T}(A::AxisArray{T,2}) = AxisArray(ctranspose(A.data), A.axes[2], A.axes[1]) +Base.transpose{T}(A::AxisArray{T,1}) = AxisArray(transpose(A.data), Axis{:transpose}(Base.OneTo(1)), A.axes[1]) +Base.ctranspose{T}(A::AxisArray{T,1}) = AxisArray(ctranspose(A.data), Axis{:transpose}(Base.OneTo(1)), A.axes[1]) + permutation(to::Union{AbstractVector{Int},Tuple{Int,Vararg{Int}}}, from::Symbols) = to """ diff --git a/test/core.jl b/test/core.jl index 54e57ea..296f92e 100644 --- a/test/core.jl +++ b/test/core.jl @@ -26,6 +26,8 @@ C = similar(A, 0) D = similar(A) @test size(A) == size(D) @test eltype(A) == eltype(D) + +# permutedims and transpose @test axisnames(permutedims(A, (2,1,3))) == (:col, :row, :page) @test axisnames(permutedims(A, (2,3,1))) == (:col, :page, :row) @test axisnames(permutedims(A, (3,2,1))) == (:page, :col, :row) @@ -35,6 +37,17 @@ for perm in ((:col, :row, :page), (:col, :page, :row), (:row, :page, :col), (:row, :col, :page)) @test axisnames(permutedims(A, perm)) == perm end +@test axisnames(permutedims(A, (:col,))) == (:col, :row, :page) +@test axisnames(permutedims(A, (:page,))) == (:page, :row, :col) +A2 = AxisArray(reshape(1:15, 3, 5)) +A1 = AxisArray(1:5, :t) +for f in (transpose, ctranspose) + @test f(A2).data == f(A2.data) + @test axisnames(f(A2)) == (:col, :row) + @test f(A1).data == f(A1.data) + @test axisnames(f(A1)) == (:transpose, :t) +end + # Test modifying a particular axis E = similar(A, Float64, Axis{:col}(1:2)) @test size(E) == (2,2,4)