Scipy/numpy 2D array: how to define with a function?

Join the discussion
Ask a follow-up here, or get your own question answered by working scientists, mathematicians and engineers — people, not an autocomplete.
Real named experts · corrections over time · the nuance an AI answer skips
3 replies · 8K views
Dunhausen
Messages
30
Reaction score
0
I want to make a matrix of values as so:

F(0,0) . . . F(1,n)
.
.
.
F(n,1) . . . F(n,n)

I could of course do it like this

Code:
list=[]
for i in range(0,n):
     for j in range(0,n):
     list.append(F(i,j))
a=array(list)
a.reshape(n,n)

But I am curious if there is a more elegant way to build an array with the rule Element i,j = F(i,j) ?

When working with 1-d arrays, I am accustomed to their savvy nature eliminating all need for 'for loops' in my code.
 
Last edited:
Physics news on Phys.org
Code:
a = numpy.empty((n+1,n+1))
for i in range(0,n):
    for j in range(0,n):
        a[i,j] = F(i,j)

or
Code:
i,j = numpy.meshgrid(range(0,n), range(0,n))
a = F(i,j)
 
Last edited:
That is excellent! Thank you. :)
 
Also, didn't have chance to edit, but range(n) generates the same list as range(0,n), if you want to be slightly more concise.