Build a Python list and convert that to a Numpy array. That takes amortized O(1) time per append + O(n) for the conversion to array, for a total of O(n).

Use with AI    a = []
    for x in y:
        a.append(x)
    a = np.array(a)
Answer from Fred Foo on Stack Overflow
🌐
w3resource
w3resource.com › numpy › array-creation › empty.php
NumPy: numpy.empty() function - w3resource
In the second example, an empty 2D array of size (2, 2) is created with the specified data type float. The resulting array contains four undefined floating-point values. The values shown in the output are also machine-dependent and may vary each time the function is called. ... import numpy as np # Define a custom data type dt = np.dtype([('Employee Name:', np.str_, 16), ('Age:', np.int32), ('Salary:', np.float64)]) # Create an empty array with the custom data type employee = np.empty((2, 3), dtype=dt) # Print the array print(employee)
🌐
Note.nkmk.me
note.nkmk.me › home › python › numpy
NumPy: Create an empty array (np.empty, np.empty_like) | note.nkmk.me
January 22, 2024 - Python's built-in list can also be converted to ndarray. For example, you can add elements to an empty list first and then convert it to an ndarray upon completion. ... If the final number of elements is already known, it is better to create an array of the necessary size using np.empty() or np.empty_like() and then assign values. NumPy: Get and set values in an array using various indexing
🌐
GeeksforGeeks
geeksforgeeks.org › python › python-initialize-empty-array-of-given-length
Python - Initialize empty array of given length - GeeksforGeeks
In this example, we are using a Python loop for 1D and 2D empty arrays. ... In this method, we are using the Numpy module to generate an empty matrix of 1D and 2D sizes using np.empty().
Published: July 12, 2025
Top answer
1 of 16
612

That is the wrong mental model for using NumPy efficiently. NumPy arrays are stored in contiguous blocks of memory. To append rows or columns to an existing array, the entire array needs to be copied to a new block of memory, creating gaps for the new elements to be stored. This is very inefficient if done repeatedly.

Instead of appending rows, allocate a suitably sized array, and then assign to it row-by-row:

>>> import numpy as np

>>> a = np.zeros(shape=(3, 2))
>>> a
array([[ 0.,  0.],
       [ 0.,  0.],
       [ 0.,  0.]])

>>> a[0] = [1, 2]
>>> a[1] = [3, 4]
>>> a[2] = [5, 6]

>>> a
array([[ 1.,  2.],
       [ 3.,  4.],
       [ 5.,  6.]])
2 of 16
150

A NumPy array is a very different data structure from a list and is designed to be used in different ways. Your use of hstack is potentially very inefficient... every time you call it, all the data in the existing array is copied into a new one. (The append function will have the same issue.) If you want to build up your matrix one column at a time, you might be best off to keep it in a list until it is finished, and only then convert it into an array.

e.g.


mylist = []
for item in data:
    mylist.append(item)
mat = numpy.array(mylist)

item can be a list, an array or any iterable, as long as each item has the same number of elements.
In this particular case (data is some iterable holding the matrix columns) you can simply use


mat = numpy.array(data)

(Also note that using list as a variable name is probably not good practice since it masks the built-in type by that name, which can lead to bugs.)

EDIT:

If for some reason you really do want to create an empty array, you can just use numpy.array([]), but this is rarely useful!

Find elsewhere
🌐
IncludeHelp
includehelp.com › python › initialise-numpy-array-of-unknown-length.aspx
Python - Initialise numpy array of unknown length
Suppose we want to build a NumPy ... the elements that lie in some range. To initialise numpy array of unknown length, we can build a Python list and convert that to a Numpy array....
🌐
Educative
educative.io › answers › how-to-create-an-empty-numpy-array
How to create an empty NumPy array
numpy.zeros(shape, dtype=float, order='C') numpy.empty(shape, dtype=float, order='C') # Shape -> Shape of the new array, e.g., (2, 3) or 2. # dtype -> The desired data-type for the array,e.g., numpy.int8.
🌐
Python Guides
pythonguides.com › create-an-empty-array-in-python
Python Empty Array: Create, Declare, Size N and NumPy
January 12, 2026 - For NumPy, use arr.size == 0. Recent NumPy raises ValueError for the truth value of an empty array, which contradicts a lot of older advice that says if not arr is fine.
🌐
Delft Stack
delftstack.com › "delft stack" › "howto" › "python numpy howtos" › "how to create empty numpy array"
How to Create Empty NumPy Array | Delft Stack
March 11, 2025 - The numpy.zeros() function is a straightforward way to create an empty array filled with zeros. This method is particularly useful when you need to initialize an array of a specific shape and size, with all elements set to zero.
🌐
YouTube
youtube.com › how to fix your computer
PYTHON : Initialise numpy array of unknown length - YouTube
PYTHON : Initialise numpy array of unknown length [ Gift : Animated Search Engine : https://www.hows.tech/p/recommended.html ] PYTHON : Initialise numpy arr
Published: December 6, 2021
Views: 187
🌐
Python Help
pythonhelp.org › numpy › how-to-create-an-empty-numpy-array
Creating an Empty NumPy Array
This line imports the `numpy` library and assigns it a shorter alias `np`, which is commonly used in NumPy-related code. 2. **Create an Empty Array:** ```python empty_array = np.empty(0) The np.empty() function creates an empty array of the ...
Top answer
1 of 2
1

If by empty array, you mean an array with 0 dimensions, you can simply convert to a NumPy array an empty list:

import numpy as np

np.array([])
# array([], dtype=float64)

or use any of the NumPy's initialization functions with a (0,) or 0 shape, e.g.:

np.zeros((0,))
# array([], dtype=float64)

np.ones((0,))
# array([], dtype=float64)

np.empty((0,))
# array([], dtype=float64)

np.full((0,), 0.0)                                                                          
# array([], dtype=float64)

etc.


If by empty you mean an array of given size but not initialized (i.e. you only ask the OS for the required memory), you can use np.empty() specifying the size you need, e.g.:

np.empty((2, 3))
# array([[1.46643506e-316, 0.00000000e+000, 0.00000000e+000],
#        [0.00000000e+000, 0.00000000e+000, 0.00000000e+000]])
2 of 2
0

There are two ways an empty NumPy array can be created: numpy.zeros and numpy.empty.

The syntax for using numpy.zeros and numpy.empty is shown below:

numpy.zeros(shape, dtype=float, order='C')
numpy.empty(shape, dtype=float, order='C')

# Shape -> Shape of the new array, e.g., (2, 3) or 2.

# dtype -> The desired data-type for the array,e.g., numpy.int8. Default is numpy.float64. This parameter is optional.

# order -> Indicates whether multi-dimensional data should be stored in row-major (C-style) or column-major (Fortran-style) order in memory. This parameter is optional.

how to use numpy.zeros to create an empty NumPy array:

import numpy as np
myArr = np.zeros((2,3))
print(myArr)

how to use numpy.empty to create an empty NumPy array:

import numpy as np
myArr = np.empty((2,3))
print(myArr)

numpy.empty, unlike numpy.zeros, does not set the array values to zero and, ​therefore, may be marginally faster. On the other hand, it requires the user to manually set all the values in the array ​and should be used with caution.