how to improve this cycle (extracting data from structured array)?

Tim Chase python.list at tim.thechases.com
Thu Feb 11 07:08:31 EST 2010


Alexzive wrote:
> I am just wondering if there is a quick way to improve this algorithm
> [N is a structured array which hold info about the nodes n of a finite
> element mesh, and n is about 300.000). I need to extract info from N
> and put it in to a 3*n matrix NN which I reshape then with numpy. I
> think to "append" is quite unefficient:
> 
> ***********************************************************
> N = odb.rootAssembly.instances['PART-1-1'].nodes
> 
> NN=[]
> 
> B=[0,0,0]
>  #auxsiliar vector
> for i in range(len(N)):
>     B[0] = N[i].label
>     B[1] = N[i].coordinates[0]
>     B[2] = N[i].coordinates[1]
>     NN = append(NN,B)

Usually this would be written with a list-comprehension, 
something like

   nn = [(x.label, x.coordinates[0], x.coordinates[1])
         for x in N]

or if you really need lists-of-lists instead of lists-of-tuples:

   nn = [[x.label, x.coordinates[0], x.coordinates[1]]
         for x in N]

-tkc





More information about the Python-list mailing list