Maison >développement back-end >Tutoriel Python >Comment sérialiser les tableaux NumPy pour JSON dans Django ?

Comment sérialiser les tableaux NumPy pour JSON dans Django ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-03 15:12:03300parcourir

How do I serialize NumPy arrays for JSON in Django?

Gestion de la sérialisation des tableaux NumPy pour JSON

Lorsque vous travaillez avec des tableaux NumPy dans le développement Web à l'aide du framework Django, vous pouvez rencontrer l'erreur :

array([   0,  239,  479,  717,  952, 1192, 1432, 1667], dtype=int64) is not JSON serializable

Cette erreur se produit car les tableaux NumPy ne sont pas sérialisables JSON par défaut. JSON, un format d'échange de données populaire, ne prend en charge que certains types de données, tels que les entiers, les chaînes et les tableaux de ces types. Cependant, les tableaux NumPy sont des objets complexes et multidimensionnels qui ne peuvent pas être directement représentés en JSON.

Solution : Conversion des tableaux NumPy pour JSON

Pour résoudre ce problème, vous pouvez convertir le tableau NumPy dans une représentation compatible JSON. La méthode recommandée est d'utiliser la méthode .tolist() sur le tableau :

<code class="python">import numpy as np
a = np.arange(10).reshape(2,5) # Create a 2x5 array
b = a.tolist() # Convert to a list of lists</code>

La méthode .tolist() convertit le tableau NumPy en une liste imbriquée d'éléments, compatible avec JSON.

Enregistrement et chargement des données JSON

Pour enregistrer la liste convertie au format JSON, utilisez le code suivant :

<code class="python">import codecs, json
file_path = "/path/to/file.json"
json.dump(b, codecs.open(file_path, 'w', encoding='utf-8'), separators=(',', ':'), sort_keys=True, indent=4)</code>

Ce code enregistrera le lister b en tant que fichier JSON au chemin spécifié avec un formatage approprié.

Pour charger et reconstruire le tableau NumPy à partir du fichier JSON :

<code class="python">new_b = json.loads(codecs.open(file_path, 'r', encoding='utf-8').read())
new_a = np.array(new_b)</code>

Ce code lit le fichier JSON et le convertit retour dans une liste new_b. La fonction np.array() reconstruit ensuite le tableau NumPy new_a.

Conclusion

En convertissant les tableaux NumPy en listes compatibles JSON et en utilisant les méthodes de sérialisation et de désérialisation JSON appropriées , vous pouvez gérer efficacement le stockage et la récupération des données NumPy dans les variables contextuelles de Django. Cela garantit que les données peuvent être transférées de manière sécurisée et efficace entre le backend Django et le frontend pour le rendu.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn