JSON の NumPy 配列シリアル化の処理
Django フレームワークを使用した Web 開発で NumPy 配列を操作する場合、次のエラーが発生する場合があります。
array([ 0, 239, 479, 717, 952, 1192, 1432, 1667], dtype=int64) is not JSON serializable
このエラーは、NumPy 配列がデフォルトでは JSON シリアル化できないために発生します。一般的なデータ交換形式である JSON は、整数、文字列、これらの型の配列などの特定のデータ型のみをサポートします。ただし、NumPy 配列は複雑な多次元オブジェクトであり、JSON で直接表すことができません。
解決策: NumPy 配列を JSON に変換する
この問題を解決するには、次のように変換できます。 NumPy 配列を JSON 互換の表現に変換します。推奨される方法は、配列に対して .tolist() メソッドを使用することです。
<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>
.tolist() メソッドは、NumPy 配列を、JSON と互換性のある要素のネストされたリストに変換します。
JSON データの保存とロード
変換されたリストを JSON 形式で保存するには、次のコードを使用します。
<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>
このコードは、適切な形式で、指定されたパスにある JSON ファイルとして b をリストします。
JSON ファイルから NumPy 配列をロードして再構築するには:
<code class="python">new_b = json.loads(codecs.open(file_path, 'r', encoding='utf-8').read()) new_a = np.array(new_b)</code>
このコードは、JSON ファイルを読み取り、変換します。 new_b リストに戻ります。次に、np.array() 関数は、NumPy 配列 new_a を再構築します。
結論
NumPy 配列を JSON 互換のリストに変換し、適切な JSON シリアル化および逆シリアル化メソッドを使用することにより、を使用すると、Django コンテキスト変数での NumPy データの保存と取得を効果的に処理できます。これにより、Django バックエンドとレンダリング用のフロントエンドの間でデータを安全かつ効率的に転送できるようになります。
以上がDjango で JSON の NumPy 配列をシリアル化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。