# The best way to create a AbstractArray with known first demension size

**URL:** <https://discourse.julialang.org/t/the-best-way-to-create-a-abstractarray-with-known-first-demension-size/87904>\
**Category:** New to Julia\
**Created:** [September 28, 2022, 8:13am UTC](https://discourse.julialang.org/t/the-best-way-to-create-a-abstractarray-with-known-first-demension-size/87904 "2022-09-28T08:13:19Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![Brian1](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/brian1/32/49250_2.png) [@Brian1](https://discourse.julialang.org/u/Brian1)\
**Post date:** [September 28, 2022, 8:13am UTC](https://discourse.julialang.org/t/the-best-way-to-create-a-abstractarray-with-known-first-demension-size/87904/1 "2022-09-28T08:13:19Z")

</div>

What is the best way to preallocate a Array with knowning the first demension size(that is 5), while keeping unchanged for other demension:

```julia
test_func(x::Array{T,N}) = Array{T,N}(undef,5,size(x)[2:end]...)

a_vec = [1,2,3]
a_mat = [[1,2,3] [2,3,4]]

test_func(a_vec) 
# [0,0,0,0,0]
test_func(a_mat) 
[
 0 0
 0 0 
 0 0 
 0 0 
 0 0 
]

```

Is there other better and brife ways to def `test_func`?

---

<div class="post-metadata">

**Author:** ![ChrisRackauckas](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/chrisrackauckas/32/77_2.png) [@ChrisRackauckas](https://discourse.julialang.org/u/ChrisRackauckas)\
**Post date:** [September 28, 2022, 9:08am UTC](https://discourse.julialang.org/t/the-best-way-to-create-a-abstractarray-with-known-first-demension-size/87904/2 "2022-09-28T09:08:12Z")

</div>

`similar(a,5,Base.tail(size(a))...)`
