Problème de sérialisation des tableaux NumPy avec Django
Lors de l'utilisation de tableaux NumPy dans des contextes Django, vous pouvez rencontrer une erreur indiquant que le tableau n'est pas JSON sérialisable. Cela se produit parce que les tableaux NumPy, par défaut, ne peuvent pas être directement représentés au format JSON.
Explication de la sérialisation
La sérialisation implique la conversion d'objets dans un format qui peut être transmis via un réseau ou stockés de manière persistante. JSON (JavaScript Object Notation) est un format de données populaire utilisé à ces deux fins. Cependant, les tableaux stockés dans la structure de données native de NumPy (qui s'aligne sur l'optimisation de la mémoire) sont incompatibles avec le format JSON.
Solution : Conversion en listes
Pour résoudre ce problème, vous pouvez convertir le tableau NumPy en une liste imbriquée à l'aide de la méthode .tolist(). Ce processus crée une structure de liste intrinsèquement compatible avec la sérialisation JSON.
Exemple de code
Voici un exemple de sérialisation et de désérialisation d'un tableau NumPy en Python :
<code class="python">import numpy as np import codecs, json # Create a 2D NumPy array a = np.arange(10).reshape(2, 5) # Convert the array to a list b = a.tolist() # Serialize the list using JSON json.dump(b, codecs.open('path.json', 'w', encoding='utf-8'), separators=(',', ':'), sort_keys=True, indent=4) # De-serialize the JSON back to a NumPy array obj_text = codecs.open('path.json', 'r', encoding='utf-8').read() b_new = json.loads(obj_text) a_new = np.array(b_new)</code>
Ce processus convertit le tableau NumPy dans un format qui peut être transmis sur le réseau et ensuite reconstruit dans sa forme originale.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!