2017-10-10 6 views
0

J'ai donc actuellement ce code:Annexer une liste avec des tableaux en Python

x_tot = [] 
y_tot = [] 
z_tot = [] 
for i in range(0, len(cont_all)): 
    x_tot.append(cont_all[i][:, 0]) 
    y_tot.append(cont_all[i][:, 1]) 
    z_tot.append(cont_all[i][:, 2]) 

print x_tot 

Dans ce cas, le cont_all est une liste composée de plusieurs tableaux avec des valeurs x, y et z, par exemple:

array([[ -5.24, 81.67, -51. ], 
     [ -3.34, 80.73, -51. ], 
     [ -1.43, 80.24, -51. ]]) 

Mon idée était que je voudrais toutes les coordonnées x de tous les tableaux/listes dans une liste, et les valeurs y de la même manière et ainsi de suite. Mais en exécutant mon code ci-dessus, l'impression à la fin donne des listes avec des valeurs x, y et z mais toujours avec des tableaux à l'intérieur. Qu'est-ce que je fais de mal ici car il ne pas tout ajouter dans une liste et de supprimer ainsi les tableaux?

Répondre

2

Vous devez accéder aux éléments de chaque index de chaque ligne et ne pas couper la ligne comme vous l'avez fait, ce qui renvoie un sous-tableau au lieu d'un nombre.

L'affectation multiple est cependant facile à faire avec:

x_tot, y_tot, z_tot = map(list, zip(*cont_all)) 

Ou dans le cas des tableaux numpy:

x_tot, y_tot, z_tot = cont_all.T.tolist() 
0

Je viens de rencontrer votre code et il semble que cela fonctionne très bien si vous supprimez la ponctuation entre parenthèses sur vos lignes cont_all [i] [:, _]. En fait, dans ma version de python, le code ne fonctionne pas du tout avec ceux qui s'y trouvent.

x_tot = [] 
y_tot = [] 
z_tot = [] 
for i in range(0, len(cont_all)): 
    x_tot.append(cont_all[i][0]) 
    y_tot.append(cont_all[i][1]) 
    z_tot.append(cont_all[i][2]) 

la fin:

x_tot == [-5.24, -3.34, -1.43] 
y_tot == [81.67, 80.73, 80.24] 
z_tot == [-51.0, -51.0, -51.0]