I am using Plots and it requires to be set labels as 1×n Array{String, 2} but I want to make the labels automatically. I can get n-element Array{String, 1} but I cannot find how to convert this to 1×n Array{String, 2}. Can anyone help?
julia> reshape(["a","b","c"], 1, :)
1×3 Array{String,2}:
"a" "b" "c"
I stuck this for a long. Thanks a lot!
or hcat(x...)
which I find easier to remember (it is a bit slower though).
There’s also permutedims
:
julia> sa = ["a","b","c"]
3-element Array{String,1}:
"a"
"b"
"c"
julia> permutedims(sa)
1×3 Array{String,2}:
"a" "b" "c"
permutedims(sa)
seems to be about 5x faster than reshape(sa, 1, :)
, though the difference probably doesn’t matter in this case.
I cant permutedims. What version is your Julia? I’m using 0.6.2.
julia> sa = ["a", "b", "c"]
3-element Array{String,1}:
"a"
"b"
"c"
julia> permutedims(sa)
ERROR: MethodError: no method matching permutedims(::Array{String,1})
Closest candidates are:
permutedims(::Union{Base.ReshapedArray{T,N,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:Union{DenseArray, SubArray{T,N,P,I,true} where I<:Tuple{Union{Base.Slice, UnitRange},Vararg{Any,N} where N} where P where N where T}, DenseArray{T,N}, SubArray{T,N,A,I,L} where L} where I<:Tuple{Vararg{Union{Base.AbstractCartesianIndex, Int64, Range{Int64}},N} where N} where A<:Union{Base.ReshapedArray{T,N,A,MI} where MI<:Tuple{Vararg{Base.MultiplicativeInverses.SignedMultiplicativeInverse{Int64},N} where N} where A<:Union{DenseArray, SubArray{T,N,P,I,true} where I<:Tuple{Union{Base.Slice, UnitRange},Vararg{Any,N} where N} where P where N where T} where N where T, DenseArray} where N where T, ::Any) at multidimensional.jl:1292
permutedims(::AbstractArray, ::Any) at permuteddimsarray.jl:116
Huh, it’s a v0.7 change apparently:
permutedims(m::AbstractMatrix) is now short for permutedims(m, (2,1)), and is now a more convenient way of making a “shallow transpose” of a 2D array. This is the recommended approach for manipulating arrays of data, rather than the recursively defined, linear-algebra function transpose. Similarly, permutedims(v::AbstractVector) will create a row matrix (#24839).
It was on 0.7 that I tried that, I too get this error on 0.6. permutedims
on 0.6 doesn’t seem to have a way of changing a 1-D array into 2-D, so reshape is probably the way to go.
This short thread had been so educational. I didn’t know about permutedims (well, I did at one point and then forgot), and I also didn’t know you could do :
in reshape - that’s great!