# Appending to a multidimensional array

**URL:** <https://discourse.julialang.org/t/appending-to-a-multidimensional-array/8425>\
**Category:** General Usage\
**Created:** [January 17, 2018, 1:21am UTC](https://discourse.julialang.org/t/appending-to-a-multidimensional-array/8425 "2018-01-17T01:21:46Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![gideonsimpson](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/gideonsimpson/32/1928_2.png) [@gideonsimpson](https://discourse.julialang.org/u/gideonsimpson)\
**Post date:** [January 17, 2018, 1:21am UTC](https://discourse.julialang.org/t/appending-to-a-multidimensional-array/8425/1 "2018-01-17T01:21:46Z")

</div>

So I am generating a sequence of Nxd arrays, which are trajectories in d-diemsnional space. I would like to append them to one another. In the case d=1, I can do this with `append!` Is there a generalization to the d-dimensional case?

---

<div class="post-metadata">

**Author:** ![Stephen\_Vavasis](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/stephen_vavasis/32/3389_2.png) [@Stephen\_Vavasis](https://discourse.julialang.org/u/Stephen_Vavasis)\
**Post date:** [January 17, 2018, 3:55am UTC](https://discourse.julialang.org/t/appending-to-a-multidimensional-array/8425/2 "2018-01-17T03:55:46Z")

</div>

As far as I know, there is no way to append to a multidimensional array. However, you can maintain the array as an `N*d` 1-dimensional array, append to this, and then use `reshape` to see it in the shape that you want. The `reshape` function does not actually move or copy the data but instead provides a different view into it, so this technique is reasonably efficient.

---

<div class="post-metadata">

**Author:** ![jw3126](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jw3126/32/3086_2.png) [@jw3126](https://discourse.julialang.org/u/jw3126)\
**Post date:** [January 17, 2018, 2:14pm UTC](https://discourse.julialang.org/t/appending-to-a-multidimensional-array/8425/3 "2018-01-17T14:14:24Z")

</div>

You could also use `cat` if you don’t need a mutating version.

---

<div class="post-metadata">

**Author:** ![NaOH](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/naoh/32/5632_2.png) [@NaOH](https://discourse.julialang.org/u/NaOH)\
**Post date:** [January 17, 2018, 2:26pm UTC](https://discourse.julialang.org/t/appending-to-a-multidimensional-array/8425/4 "2018-01-17T14:26:49Z")

</div>

Check out tho documentation of `cat` you can specify the dimension along which you want to concatenate N-dimensional arrays:

1D:

```julia
julia> append!([1, 2, 3], [4, 5, 6]) # mutating!
6-element Array{Int64,1}:                   
 1                                          
 2                                          
 3                                          
 4                                          
 5                                          
 6                                          
                                            
julia> cat(1, [1, 2, 3], [4, 5, 6])         
6-element Array{Int64,1}:                   
 1                                          
 2                                          
 3                                          
 4                                          
 5                                          
 6      

```

Generalization:

```julia
julia> cat(2, [1, 2, 3], [4, 5, 6])         
3×2 Array{Int64,2}:                         
 1 4                                       
 2 5                                       
 3 6                                       
                                            
julia> cat(3, [1 2 ;3 4], [5 6 ; 7 8])      
2×2×2 Array{Int64,3}:                       
[:, :, 1] =                                 
 1 2                                       
 3 4                                       
                                            
[:, :, 2] =                                 
 5 6                                       
 7 8                                       

```

---

<div class="post-metadata">

**Author:** ![foobar\_lv2](https://avatars.discourse-cdn.com/v4/letter/f/ee59a6/32.png) [@foobar\_lv2](https://discourse.julialang.org/u/foobar_lv2)\
**Post date:** [January 17, 2018, 2:45pm UTC](https://discourse.julialang.org/t/appending-to-a-multidimensional-array/8425/5 "2018-01-17T14:45:23Z")

</div>

Check out [https://github.com/JuliaArrays/ElasticArrays.jl](https://github.com/JuliaArrays/ElasticArrays.jl).

Also consider using Vector{SVector{d, Float\_T}} if you can live with d being a jit-time constant (this could actually speed up your code because it allows specialization on d).

---

<div class="post-metadata">

**Author:** ![mustela125](https://avatars.discourse-cdn.com/v4/letter/m/3bc359/32.png) [@mustela125](https://discourse.julialang.org/u/mustela125)\
**Post date:** [July 14, 2019, 10:12pm UTC](https://discourse.julialang.org/t/appending-to-a-multidimensional-array/8425/6 "2019-07-14T22:12:52Z")

</div>

The thing you are adding needs to have the same dimension as the thing you are appending to:

# 2-dimensional array

A = [[1, 1]]

# append a 2-d array to A

append!(A, [[2, 2]])

---

<div class="post-metadata">

**Author:** ![Tamas\_Papp](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tamas_papp/32/25949_2.png) [@Tamas\_Papp](https://discourse.julialang.org/u/Tamas_Papp)\
**Post date:** [July 15, 2019, 5:09am UTC](https://discourse.julialang.org/t/appending-to-a-multidimensional-array/8425/7 "2019-07-15T05:09:50Z")

</div>

I think you misunderstand something: `[[1, 1]]` is a `Vector` (one-dimensional array), with another `Vector` for elements. This is not equivalent to 2-dimensional arrays.

Also, please don’t revive old topics without a compelling reason.

---

<div class="post-metadata">

**Author:** ![Xing\_Shi\_Cai](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/xing_shi_cai/32/14128_2.png) [@Xing\_Shi\_Cai](https://discourse.julialang.org/u/Xing_Shi_Cai)\
**Post date:** [April 23, 2020, 8:21pm UTC](https://discourse.julialang.org/t/appending-to-a-multidimensional-array/8425/8 "2020-04-23T20:21:30Z")

</div>

`A` is an array of array. Not a two dimensional array.
