Is there way to initialize a numpy array of a shape and add to it? I will explain what I need with a list example. If I want to create a list of objects generated in a loop, I can do:

```
a = []
for i in range(5):
a.append(i)
```

I want to do something similar with a numpy array. I know about vstack, concatenate etc. However, it seems these require two numpy arrays as inputs. What I need is:

```
big_array # Initially empty. This is where I don't know what to specify
for i in range(5):
array i of shape = (2,4) created.
add to big_array
```

The `big_array`

should have a shape `(10,4)`

. How to do this?

**EDIT:**

I want to add the following clarification. I am aware that I can define `big_array = numpy.zeros((10,4))`

and then fill it up. However, this requires specifying the size of big_array in advance. I know the size in this case, but what if I do not? When we use the `.append`

function for extending the list in python, we don't need to know its final size in advance. I am wondering if something similar exists for creating a bigger array from smaller arrays, starting with an empty array.

Return a new array of given shape and type, filled with zeros.

or

Return a new array of given shape and type, filled with ones.

or

Return a new array of given shape and type, without initializing entries.

However, the mentality in which we construct an array by appending elements to a list is not much used in numpy, because it's less efficient (numpy datatypes are much closer to the underlying C arrays). Instead, you should preallocate the array to the size that you need it to be, and then fill in the rows. You can use `numpy.append`

if you must, though.

The way I usually do that is by creating a regular list, then append my stuff into it, and finally transform the list to a numpy array as follows :

```
import numpy as np
big_array = [] # empty regular list
for i in range(5):
arr = i*np.ones((2,4)) # for instance
big_array.append(arr)
big_np_array = np.array(big_array) # transformed to a numpy array
```

of course your final object takes twice the space in the memory at the creation step, but appending on python list is very fast, and creation using np.array() also.

Licensed under: CC-BY-SA with attribution

Not affiliated with: Stack Overflow