I have an empty array A:
A = Array{Float64}(undef, 0, 2)
and a vector that I want to add:
m = rand(2)
I try to do this:
A = [A;m]
ArgumentError: number of columns of each array must match (got (2, 1))
Thanks.
I have an empty array A:
A = Array{Float64}(undef, 0, 2)
and a vector that I want to add:
m = rand(2)
I try to do this:
A = [A;m]
ArgumentError: number of columns of each array must match (got (2, 1))
Thanks.
Your first array is 2-dimensional. Try this
julia> A = Array{Float64}(undef, 2)
2-element Array{Float64,1}:
6.9016019742975e-310
6.9016002397421e-310
julia> m = rand(2)
2-element Array{Float64,1}:
0.6212512011951012
0.949613146540832
julia> A = [A;m]
4-element Array{Float64,1}:
6.9016019742975e-310
6.9016002397421e-310
0.6212512011951012
0.949613146540832
Thank you so much for your help.
What I really want is an nx2 array (Add rows to array “A”)
[A; m']
works. The point is that thing you append must be a row vector (formed by m'
or transpose(m)
) or in any case a matrix with the same number of columns. A one-dimensional array like m
, in contrast, is treated by Julia as a “column vector” (one column).
In the docs: Concatenation
Concatenation need to create new a array and it’s very inefficiently! because the vcat function is used
julia> @which [A;m']
vcat(A::Union{Array{T,1}, ...
Multidimensional arrays in Julia are stored in column-major order. A good discussion is
I guess you could also allocate a large array if you know the maximum possible size, and crop afterwards.