Skip to content
Advertisement

How do I reduce the use of for loops using numpy?

Basically, I have three arrays that I multiply with values from 0 to 2, expanding the number of rows to the number of products (the values to be multiplied are the same for each array). From there, I want to calculate the product of every combination of rows from all three arrays. So I have three arrays

JavaScript

and I’m trying to reduce the operation given below

JavaScript

What I tried doing:

JavaScript

which only removes the last for loop. How do I reduce the other for loops?

Advertisement

Answer

You can get the same result like this:

JavaScript

Instead of using three nested loops to get every combination of elements in the “search_range” array, I used the meshgrid function to convert “search_range” to a 2D array of every possible combination and then instead of i, j and k you can use the 3 items in the arrays in the “search_range”.

And finally, as suggested by @Mercury you can use indexing for the new “search_range” array to generate the result. For example search_range[:, 1, None] is an array in shape of (1331, 1), containing singleton arrays of every element at index of 0 in arrays in the “search_range”. That concatenate is only there because you wanted the results array to have default value of [[0, 0, 0]], so I appended sm to it; Otherwise, the sm array contains the answer.

User contributions licensed under: CC BY-SA
5 People found this is helpful
Advertisement