You could preallocate the array before assigning the respective values:

a = np.empty(shape=(25, 2), dtype=int)
for x in range(1, 6):
    for y in range(1, 6):
        index = (x-1)*5+(y-1)
        a[index] = x, y
Answer from aasoo on Stack Overflow
🌐
Tudelft
nsweb.tn.tudelft.nl › ~gsteele › TN2513_Tips › Creating a numpy array in a loop.html
Creating a numpy array in a loop
y is: <class 'numpy.ndarray'> [ 0. 1. 4. 9. 16. 25. 36. 49. 64. 81.] This is the most computationally efficient way, but it only works if you know in advance how big the final array will be! If you don't know how big it will be in then end, the first example with lists is probably your best bet. ... N = 10 # Pre-allocate an array of the right size y = np.zeros(N) # Now fill the arry for i in range(N): x = i y[i] = x**2 print("y is:") print(type(y)) print(y)
Discussions

python - Construct an numpy array inside a for loop - Stack Overflow
I am trying to load a database from my python code which contains a list of dictionaries. For each item of the list the dictionary contains the name of a file a sub-list which contains n different More on stackoverflow.com
🌐 stackoverflow.com
python - Most efficient and most pythonic way to create a NumPy array within a loop - Stack Overflow
I'm currently trying to figure out the most efficient way to create a numpy array in a loop, here are the examples: import numpy as np from time import time tic = time() my_list = range(1000000) a... More on stackoverflow.com
🌐 stackoverflow.com
July 10, 2017
python - creating numpy arrays in a for loop - Stack Overflow
I would like to be able to create numpy arrays based on a number that could change. For example, say I have 50 text files containing a 2x2 set of numbers I would like to load those 50 files as numpy More on stackoverflow.com
🌐 stackoverflow.com
python - how create numpy array with for loop - Stack Overflow
Hello sorry for my english i'm not native and not good so i have some question I am creating a function in python that multiplies a desired number by a whole consecutive integer. the heart of my pr... More on stackoverflow.com
🌐 stackoverflow.com
🌐
Akuederle
akuederle.com › quicktips › create-numpy-array-with-for-loop
The proper way to create a numpy array inside a for-loop
April 14, 2015 - If you came across the same issue, I described above, consider using a simple python list, and converting it to a numpy array at the end (this is way faster!). If you know the exact size of the final array (which I assumed you do not), you can also try initializing an empty array with this size first and then replace certain parts by index inside of the loop.
Find elsewhere
🌐
EDUCBA
educba.com › home › software development › software development tutorials › numpy tutorial › numpy for loop
NumPy for loop | Learn the Examples of NumPy for loop
April 3, 2023 - In this example, we have created an array and iterated it twice using python for a loop. This method allows us to perform different operations while iterating multiple times, and this method is very efficient and requires less coding. In this example, we have created a zero-dimensional array and converted it into a two-dimensional array. ... import numpy as np arr = np.array([[[8, 16, 44], [0, 4, 7]], [[22, 40, 16], [7, 14, 21]]]) for x in arr: for y in x: for z in y: print(z)
Address: Unit no. 202, Jay Antariksh Bldg, Makwana Road, Marol, Andheri (East),, 400059, Mumbai
Top answer
1 of 4
36

NumPy provides a 'fromiter' method:

def myfunc(n):
    for i in range(n):
        yield i**2


np.fromiter(myfunc(5), dtype=int)

which yields

array([ 0,  1,  4,  9, 16])
2 of 4
19

The recommended way to do this is to preallocate before the loop and use slicing and indexing to insert

my_array = numpy.zeros(1,1000)
for i in xrange(1000):
    #for 1D array
    my_array[i] = functionToGetValue(i)
    #OR to fill an entire row
    my_array[i:] = functionToGetValue(i)
    #or to fill an entire column
    my_array[:,i] = functionToGetValue(i)

numpy does provide an array.resize() method, but this will be far slower due to the cost of reallocating memory inside a loop. If you must have flexibility, then I'm afraid the only way is to create an array from a list.

EDIT: If you are worried that you're allocating too much memory for your data, I'd use the method above to over-allocate and then when the loop is done, lop off the unused bits of the array using array.resize(). This will be far, far faster than constantly reallocating the array inside the loop.

EDIT: In response to @user248237's comment, assuming you know any one dimension of the array (for simplicity's sake):

my_array = numpy.array(10000, SOMECONSTANT)

for i in xrange(someVariable):
    if i >= my_array.shape[0]:
        my_array.resize((my_array.shape[0]*2, SOMECONSTANT))

    my_array[i:] = someFunction()

#lop off extra bits with resize() here

The general principle is "allocate more than you think you'll need, and if things change, resize the array as few times as possible". Doubling the size could be thought of as excessive, but in fact this is the method used by several data structures in several standard libraries in other languages (java.util.Vector does this by default for example. I think several implementations of std::vector in C++ do this as well).

🌐
TutorialsPoint
tutorialspoint.com › numpy › numpy_iterating_over_array.htm
NumPy - Iterating Over Array
A for loop is a control flow statement used for iterating over a sequence (such as a list, tuple, dictionary, set, or string). It allows you to execute a block of code repeatedly for each element in the sequence. A 1-dimensional array is basically a list of elements. Iterating over it is simple and similar to iterating over a regular Python list. ... In the following example, we create a NumPy array from a list of elements and iterate over each element using a for loop −
🌐
W3Schools
w3schools.com › python › numpy › numpy_array_iterating.asp
NumPy Array Iterating
import numpy as np arr = np.array([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]]) for x in arr: for y in x: for z in y: print(z) Try it Yourself » · The function nditer() is a helping function that can be used from very basic to very advanced iterations. It solves some basic issues which we face in iteration, lets go through it with examples. In basic for loops, iterating through each scalar of an array we need to use n for loops which can be difficult to write for arrays with very high dimensionality.