Hello, I would like to know how to convert from an Array
/Vector{Array{Float64,2}}
into Array{Float64,2}
or how I can create a plot from them.
I can convert a
Vector{Array{Float64,2}} with 50001 elements
1×8 Array{Float64,2}:
1×8 Array{Float64,2}:
...
into a
50001×1 Array{Array{Float64,2},2}:
[0.0 0.711225 … 0.0013899305857990158 -6.671582721176745e-7]
[1.0 0.7113210329556476 … 0.0013897332870554818 -6.671582721176745e-7]
...
But what I’d prefer is a 50001×8 Array{Float64,2}:
as I can then convert it to a DataFrame
and
I know how to plot from there. I’ve look at documentation and googled, but I can’t find anything. I apologize if this is something obvious.
Hi! How about this?
a = [Matrix([rand() for i=1:8]') for j=1:3] # Array{Array{Float64,2},1}
b = reduce(vcat,a) # Array{Float64,2}
1 Like
AndiMD:
b = reduce(vcat,a)
Wonderful!
Do you have advice on how to search for answers like this in the documentation?
See also VectorOfArray from https://github.com/SciML/RecursiveArrayTools.jl
Unfortunately, this a little tricky to find, because it combines two functions/concepts:
Vertical array concatenation with vcat
https://docs.julialang.org/en/v1/base/arrays/#Concatenation-and-permutation-1
There, you find the solution b = vcat(a...)
This works in your scenario, but can be slow if a
has a large number of elements.
The reduce
function. It is not easy to find in your context, because it is very generic and is used for many things in functional programming. Its one of these functions that is worth always keeping in mind when using Julia.
I feel the documentation of cat
could reference reduce
, because you’re not the first person to ask this…
1 Like
Elrod
June 7, 2020, 7:39pm
6
Not relevant to the question, but
julia> rand(1,8)
1×8 Array{Float64,2}:
0.466874 0.26308 0.105319 0.947792 0.916321 0.975012 0.959983 0.361349
is simpler.
1 Like
Two other options; choose first for speed or second for compactness:
julia> a = [rand(1,8) for j=1:3]
3-element Array{Array{Float64,2},1}:
[0.10125963142469918 0.034107265019388766 … 0.62765959243681 0.5979593698724655]
[0.9642252312080619 0.6314535023806402 … 0.7191877977658307 0.13816813789137528]
[0.07586919612074938 0.36551814184760767 … 0.13870916326032479 0.85237811990861]
julia> [a[i][j] for i = 1:3, j = 1:8]
3×8 Array{Float64,2}:
0.10126 0.0341073 0.846837 0.194128 0.119424 0.327054 0.62766 0.597959
0.964225 0.631454 0.245285 0.64749 0.682603 0.914577 0.719188 0.138168
0.0758692 0.365518 0.801229 0.561955 0.366092 0.407825 0.138709 0.852378
julia> vcat(a...)
3×8 Array{Float64,2}:
0.10126 0.0341073 0.846837 0.194128 0.119424 0.327054 0.62766 0.597959
0.964225 0.631454 0.245285 0.64749 0.682603 0.914577 0.719188 0.138168
0.0758692 0.365518 0.801229 0.561955 0.366092 0.407825 0.138709 0.852378