# How does one add rows to a Julia array?

**URL:** <https://discourse.julialang.org/t/how-does-one-add-rows-to-a-julia-array/24056>\
**Category:** New to Julia\
**Created:** [May 10, 2019, 2:13am UTC](https://discourse.julialang.org/t/how-does-one-add-rows-to-a-julia-array/24056 "2019-05-10T02:13:43Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![Elmer\_Cusipuma](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/elmer_cusipuma/32/11958_2.png) [@Elmer\_Cusipuma](https://discourse.julialang.org/u/Elmer_Cusipuma)\
**Post date:** [May 10, 2019, 2:13am UTC](https://discourse.julialang.org/t/how-does-one-add-rows-to-a-julia-array/24056/1 "2019-05-10T02:13:43Z")

</div>

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:

```julia
A = [A;m]
ArgumentError: number of columns of each array must match (got (2, 1))

```

Thanks.

---

<div class="post-metadata">

**Author:** ![aaowens](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/aaowens/32/12101_2.png) [@aaowens](https://discourse.julialang.org/u/aaowens)\
**Post date:** [May 10, 2019, 2:17am UTC](https://discourse.julialang.org/t/how-does-one-add-rows-to-a-julia-array/24056/2 "2019-05-10T02:17:39Z")

</div>

Your first array is 2-dimensional. Try this

```julia
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 

```

---

<div class="post-metadata">

**Author:** ![Elmer\_Cusipuma](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/elmer_cusipuma/32/11958_2.png) [@Elmer\_Cusipuma](https://discourse.julialang.org/u/Elmer_Cusipuma)\
**Post date:** [May 10, 2019, 2:34am UTC](https://discourse.julialang.org/t/how-does-one-add-rows-to-a-julia-array/24056/3 "2019-05-10T02:34:34Z")

</div>

Thank you so much for your help.  
What I really want is an nx2 array (Add rows to array “A”)

---

<div class="post-metadata">

**Author:** ![stevengj](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/stevengj/32/71_2.png) [@stevengj](https://discourse.julialang.org/u/stevengj)\
**Post date:** [May 10, 2019, 2:37am UTC](https://discourse.julialang.org/t/how-does-one-add-rows-to-a-julia-array/24056/4 "2019-05-10T02:37:17Z")

</div>

`[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).

---

<div class="post-metadata">

**Author:** ![Mattriks](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mattriks/32/351_2.png) [@Mattriks](https://discourse.julialang.org/u/Mattriks)\
**Post date:** [May 10, 2019, 2:39am UTC](https://discourse.julialang.org/t/how-does-one-add-rows-to-a-julia-array/24056/5 "2019-05-10T02:39:44Z")

</div>

In the docs: [Concatenation](https://docs.julialang.org/en/v1/manual/arrays/#Concatenation-1)

---

<div class="post-metadata">

**Author:** ![Martin\_Florek](https://avatars.discourse-cdn.com/v4/letter/m/f4b2a3/32.png) [@Martin\_Florek](https://discourse.julialang.org/u/Martin_Florek)\
**Post date:** [July 1, 2020, 7:41am UTC](https://discourse.julialang.org/t/how-does-one-add-rows-to-a-julia-array/24056/6 "2020-07-01T07:41:39Z")

</div>

[Concatenation](https://docs.julialang.org/en/v1/manual/arrays/#man-array-concatenation-1) need to create new a array and it’s very inefficiently! because the [vcat](https://docs.julialang.org/en/v1/base/arrays/#Base.vcat) function is used

```Julia
julia> @which [A;m']
vcat(A::Union{Array{T,1}, ...

```

Multidimensional arrays in Julia are stored in column-major order. A good discussion is

> [@Silly question. How to add a row to array?](https://discourse.julialang.org/t/silly-question-how-to-add-a-row-to-array/33601/10):
>
> A 2d Array is inherently a bad data structure if you want to add rows dynamically. Julia arrays are stored column-major (contiguous columns), which means that even if you resized the memory to accommodate a new row, you would need to insert a new element into each column by moving every column in memory. One possibility here is to use an vector of arrays, e.g. julia\> a = [[2,3], [5,6]] 2-element Array{Array{Int64,1},1}: [2, 3] [5, 6] julia\> push!(a, [1,2]) 3-element Array{Array{Int64,1},1…

---

<div class="post-metadata">

**Author:** ![jiggunjer](https://avatars.discourse-cdn.com/v4/letter/j/2acd7d/32.png) [@jiggunjer](https://discourse.julialang.org/u/jiggunjer)\
**Post date:** [July 4, 2020, 9:54am UTC](https://discourse.julialang.org/t/how-does-one-add-rows-to-a-julia-array/24056/7 "2020-07-04T09:54:05Z")

</div>

I guess you could also allocate a large array if you know the maximum possible size, and crop afterwards.
