ホームページ > バックエンド開発 > Python チュートリアル > Django で JSON の NumPy 配列をシリアル化するにはどうすればよいですか?

Django で JSON の NumPy 配列をシリアル化するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-11-03 15:12:03
オリジナル
309 人が閲覧しました

How do I serialize NumPy arrays for JSON in Django?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート