FAQ
Hello guys,

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)

NN=NN.reshape(-1,3)

****************************************************
Alex

## Search Discussions

•  at Feb 11, 2010 at 12:08 pm ⇧

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
•  at Feb 11, 2010 at 2:16 pm ⇧

On Feb 11, 1:08?pm, Tim Chase wrote:
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
yeah, much better thanks!
Alex

## Related Discussions

Discussion Overview
 group python-list categories python posted Feb 11, '10 at 11:44a active Feb 11, '10 at 2:16p posts 3 users 2 website python.org

### 2 users in discussion

Content

People

Support

Translate

site design / logo © 2022 Grokbase