Django での NumPy 配列のシリアル化の問題
Django コンテキスト内で NumPy 配列を利用すると、配列が JSON ではないことを示すエラーが発生する場合がありますシリアライズ可能。これは、デフォルトでは、NumPy 配列を JSON 形式で直接表すことができないために発生します。
シリアル化の説明
シリアル化には、オブジェクトを送信できる形式に変換することが含まれます。ネットワークまたは永続的に保存されます。 JSON (JavaScript Object Notation) は、両方の目的に使用される一般的なデータ形式です。ただし、NumPy のネイティブ データ構造 (メモリ最適化に合わせた) に格納された配列は、JSON 形式と互換性がありません。
解決策: リストへの変換
この問題を解決するには、 .tolist() メソッドを使用して、NumPy 配列をネストされたリストに変換できます。このプロセスでは、JSON シリアル化と本質的に互換性のあるリスト構造が作成されます。
コード例
Python で NumPy 配列をシリアル化および逆シリアル化する例を次に示します。
<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>
このプロセスは、NumPy 配列をネットワーク経由で送信できる形式に変換し、その後元の形式に再構築します。
以上がJSON 互換性のために Django で NumPy 配列をシリアル化する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。