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)

****************************************************
Many Thanks in advance!
Alex

Search Discussions

  • Tim Chase 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
  • Alexzive 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 Navigation
viewthread | post
Discussion Overview
grouppython-list @
categoriespython
postedFeb 11, '10 at 11:44a
activeFeb 11, '10 at 2:16p
posts3
users2
websitepython.org

2 users in discussion

Alexzive: 2 posts Tim Chase: 1 post

People

Translate

site design / logo © 2022 Grokbase