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 = N[i].label

B = N[i].coordinates

B = N[i].coordinates

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 = N[i].label
B = N[i].coordinates
B = N[i].coordinates
NN = append(NN,B)
Usually this would be written with a list-comprehension,
something like

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

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

nn = [[x.label, x.coordinates, x.coordinates]
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 = N[i].label
? ? B = N[i].coordinates
? ? B = N[i].coordinates
? ? NN = append(NN,B)
Usually this would be written with a list-comprehension,
something like

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

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

? ?nn = [[x.label, x.coordinates, x.coordinates]
? ? ? ? ?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