2017-10-14 4 views
0

J'essaie d'ajouter plusieurs matrices à un vecteur. Mon but est juste de créer un vecteur de matrices.Python - Ajouter une matrice à un vecteur dans une boucle

result_array = [] 
for prob in probs: 
    countprobstats(values) 
    result_array.append(values) 

Le problème est qu'il semble que cela remplace les valeurs précédentes avec celles obtenues par la fonction, par exemple:


de la fonction: [[6.9e-05, 0,000233] , [40836,0, 137370,0]]

Vector: [[[6.9e-05, 0,000233], [40836,0, 137370,0]]]


À partir de la fonction: [[0.00011, 0.000371], [46236.0, 155531.0]]

Vecteur: [[[0.00011, 0.000371], [46236.0, 155531.0]], [[0.00011, 0.000371], [46236.0, 155531.0]] ]


de la fonction: [[0,000148, 0,000498], [55658,0, 186734,0]]

Vector: [[[0,000148, 0,000498], [55658,0, 186734,0]], [[0,000148, 0,000498 ], [55658.0, 186734.0]], [[0.000148, 0.000498], [55658.0, 186734.0]]]

Qu'est-ce qui ne va pas? Merci

Répondre

1

On dirait values est toujours le même objet parce countprobstats il modifie en place, et vous copiez pointeurs à elle au lieu des données réelles.

Pour résoudre ce, copier les données explicitement:

something.append(values.copy()) 

... ou ont countprobstats retourner la copie au lieu de faire des modifications en place.