# Vectorize an Array of Arrays

**URL:** https://discourse.julialang.org/t/vectorize-an-array-of-arrays/55577
**Category:** General Usage
**Tags:** optimization, arrays, vector
**Created:** [February 18, 2021, 9:52pm UTC](https://discourse.julialang.org/t/vectorize-an-array-of-arrays/55577 "2021-02-18T21:52:42Z")
**Posts on this page:** 6
**Page:** 1

<div class="post-metadata">

### Author: ![egvila](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/egvila/32/21626_2.png) [@egvila](https://discourse.julialang.org/u/egvila)
#### Post date: [February 18, 2021, 9:52pm UTC](https://discourse.julialang.org/t/vectorize-an-array-of-arrays/55577/1 "2021-02-18T21:52:42Z")

</div>

I have a two-dimensional Array containing two-dimensional arrays of various sizes, something like:

```julia
nxm Array{Array{Float64,2},2}:
 zeros(3,3) ones(3,3) zeros(3,3)
 ones(2,2) zeros(2,2) ones(2,2)

```

Is there a simple way to vectorize this into an `Array{Float64,1}`? And more importantly, recover back the nested array with the initial structure?

While just working with non-nested arrays, I could easily use `reshape()` to vectorise and convert back. Perhaps there is an equivalent? Asking because they are decision variables to an optimizer that only accepts vector inputs.

Thanks in advance:)

---

<div class="post-metadata">

### Author: ![Henrique\_Becker](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/henrique_becker/32/15443_2.png) [@Henrique\_Becker](https://discourse.julialang.org/u/Henrique_Becker)
#### Post date: [February 18, 2021, 10:01pm UTC](https://discourse.julialang.org/t/vectorize-an-array-of-arrays/55577/2 "2021-02-18T22:01:27Z")

</div>

Hmmm, did you consider having the data in an `Array{Float64,1}` (as needed by the solver), and then having your matrix of matrices containing `views` instead? I have to admit I have never created a matrix `view` from a `Vector` (i.e., two-dimensional view from one-dimensional data) but I think this direction is more probable than the opposite (one-dimensional `view` from multiple two-dimensional data sources).

---

<div class="post-metadata">

### Author: ![egvila](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/egvila/32/21626_2.png) [@egvila](https://discourse.julialang.org/u/egvila)
#### Post date: [February 18, 2021, 10:17pm UTC](https://discourse.julialang.org/t/vectorize-an-array-of-arrays/55577/3 "2021-02-18T22:17:30Z")

</div>

Thank you for this, I wasn’t aware of `views`! I will try to see if that works on my problem.

---

<div class="post-metadata">

### Author: ![Henrique\_Becker](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/henrique_becker/32/15443_2.png) [@Henrique\_Becker](https://discourse.julialang.org/u/Henrique_Becker)
#### Post date: [February 18, 2021, 10:18pm UTC](https://discourse.julialang.org/t/vectorize-an-array-of-arrays/55577/4 "2021-02-18T22:18:22Z")

</div>

Any doubt just post here, XD.

---

<div class="post-metadata">

### Author: ![egvila](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/egvila/32/21626_2.png) [@egvila](https://discourse.julialang.org/u/egvila)
#### Post date: [February 18, 2021, 10:36pm UTC](https://discourse.julialang.org/t/vectorize-an-array-of-arrays/55577/5 "2021-02-18T22:36:45Z")

</div>

Thanks! I think I made it work using `reshape(view(vector, ...), n, m)` as a way to recover the structure of the sub 2D arrays. The optimizer was happy with it!

---

<div class="post-metadata">

### Author: ![baggepinnen](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/baggepinnen/32/693_2.png) [@baggepinnen](https://discourse.julialang.org/u/baggepinnen)
#### Post date: [February 19, 2021, 7:02am UTC](https://discourse.julialang.org/t/vectorize-an-array-of-arrays/55577/6 "2021-02-19T07:02:47Z")

</div>

Check out Componentarrays.jl, it does exactly this while also giving each array component a name.
