In my program I need to work with arrays roughly 500×500 to 1500×1500 within a function that is looped over 1000’s of times. In each iteration, I need to start with an array that has the same form (whose dimensions are fixed across all iterations). The initial values will be:
[0 0 0 ... 1]
[0 0 0 ... 1]
....
However, the contents of the array will be modified within the loop. What is the most efficient way to “reset” the array to this format so I can pass the same array to the function every time without having to allocate a new set of memory every time? (I know the range of rows that were modified)
I have tried:
a[first_row_modified:last_row_modified,:] = 0.
a[first_row_modified:last_row_modified,:-1] = 1.
but it takes roughly the same amount of time as just creating a new array every time with the following:
a = zeros((sizeArray, sizeArray))
a[:,-1] = 1.
Is there a faster way to effectively “erase” the array and change the last column to ones? I think this is similar to this question, clearing elements of numpy array , although my array doesn’t change sizes and i didn’t see the definitive answer to the previously asked question.
No; I think the way you are doing it is about as fast as it gets.