JuliaArrays / AxisArrays.jl

Performant arrays where each dimension can have a named axis with values
http://JuliaArrays.github.io/AxisArrays.jl/latest/
Other
200 stars 41 forks source link

Indexing order is not preserved when indexing by name #213

Open LilithHafner opened 1 year ago

LilithHafner commented 1 year ago

This seems pretty bad to me and I don't think it's documented. I'd like to call it a bug and fix it in minor release if that is acceptable.

julia> x = AxisArray([1,2], [:a, :b])
1-dimensional AxisArray{Int64,1,...} with axes:
    :row, [:a, :b]
And data, a 2-element Vector{Int64}:
 1
 2

julia> x[[:a, :b]] # Okay
1-dimensional AxisArray{Int64,1,...} with axes:
    :row, [:a, :b]
And data, a 2-element Vector{Int64}:
 1
 2

julia> x[[:b, :a]] # Should flip, but doesn't
1-dimensional AxisArray{Int64,1,...} with axes:
    :row, [:a, :b]
And data, a 2-element Vector{Int64}:
 1
 2

julia> x[[2, 1]] # Should flip and does
1-dimensional AxisArray{Int64,1,...} with axes:
    :row, [:b, :a]
And data, a 2-element Vector{Int64}:
 2
 1

Possibly related to #204

LilithHafner commented 1 year ago

Bump; I would be more than happy to submit a PR if it would be welcome.