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

Django で NumPy 配列を JSON にシリアル化できないのはなぜですか?

Mary-Kate Olsen
リリース: 2024-11-03 16:44:03
オリジナル
925 人が閲覧しました

Why Can't I Serialize a NumPy Array to JSON in Django?

NumPy 配列と JSON シリアル化: 謎の解明

NumPy 配列と Django を使用する場合、不可解なエラー「NumPy」が発生する場合があります。配列は JSON シリアル化可能ではありません。」この複雑なメッセージは、NumPy 配列を Django コンテキスト変数として保存し、Web ページ上でレンダリングしようとすると発生します。

この問題を理解するために、JSON シリアル化の領域を詳しく調べます。 JavaScript Object Notation (JSON) は、データ交換と保存に使用される一般的なデータ形式です。ただし、NumPy 配列は多次元配列であるため、JSON に直接変換できません。これがエラーの原因です。

解決策: .tolist() によるレスキュー

この問題を解決するには、「.tolist()」を使用します。方法。このメソッドは、NumPy 配列をネストされたリストに変換します。配列とは異なり、ネストされたリストは JSON にシリアル化できるため、NumPy と JSON の間のギャップを埋めることができます。

実装: ステップバイステップ ガイド

  1. NumPy、コーデック、および json をインポートします:
<code class="python">import numpy as np
import codecs, json</code>
ログイン後にコピー
  1. NumPy 配列を作成します:
<code class="python">a = np.arange(10).reshape(2, 5) # a 2 by 5 array</code>
ログイン後にコピー
  1. 配列をネストされたリストに変換します'.tolist()' を使用します:
<code class="python">b = a.tolist() # nested lists with same data, indices</code>
ログイン後にコピー
  1. JSON ストレージのファイル パスを定義します:
<code class="python">file_path = "/path.json" ## your path variable</code>
ログイン後にコピー
  1. ネストされたリストをシリアル化しますto JSON:
<code class="python">json.dump(b, codecs.open(file_path, 'w', encoding='utf-8'), 
          separators=(',', ':'), 
          sort_keys=True, 
          indent=4) ### this saves the array in .json format</code>
ログイン後にコピー

非シリアル化: NumPy 配列の回復

JSON ファイルから NumPy 配列を回復するには:

  1. JSON ファイルを文字列に読み込みます:
<code class="python">obj_text = codecs.open(file_path, 'r', encoding='utf-8').read()</code>
ログイン後にコピー
  1. JSON 文字列をネストされたリストに読み込みます:
<code class="python">b_new = json.loads(obj_text)</code>
ログイン後にコピー
  1. Convertネストされたリストを NumPy 配列に戻します:
<code class="python">a_new = np.array(b_new)</code>
ログイン後にコピー

結論

JSON シリアル化の必要性を理解し、「.tolist()」を使用することによってメソッドを使用すると、NumPy 配列と Django の間のギャップをシームレスに埋めることができます。これにより、NumPy 配列をコンテキスト変数として簡単に保存および取得できるようになり、Web アプリケーションに高度なデータ操作機能を提供できるようになります。

以上がDjango で NumPy 配列を JSON にシリアル化できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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