NumPy 配列と JSON シリアル化: 謎の解明
NumPy 配列と Django を使用する場合、不可解なエラー「NumPy」が発生する場合があります。配列は JSON シリアル化可能ではありません。」この複雑なメッセージは、NumPy 配列を Django コンテキスト変数として保存し、Web ページ上でレンダリングしようとすると発生します。
この問題を理解するために、JSON シリアル化の領域を詳しく調べます。 JavaScript Object Notation (JSON) は、データ交換と保存に使用される一般的なデータ形式です。ただし、NumPy 配列は多次元配列であるため、JSON に直接変換できません。これがエラーの原因です。
解決策: .tolist() によるレスキュー
この問題を解決するには、「.tolist()」を使用します。方法。このメソッドは、NumPy 配列をネストされたリストに変換します。配列とは異なり、ネストされたリストは JSON にシリアル化できるため、NumPy と JSON の間のギャップを埋めることができます。
実装: ステップバイステップ ガイド
<code class="python">import numpy as np import codecs, json</code>
<code class="python">a = np.arange(10).reshape(2, 5) # a 2 by 5 array</code>
<code class="python">b = a.tolist() # nested lists with same data, indices</code>
<code class="python">file_path = "/path.json" ## your path variable</code>
<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 配列を回復するには:
<code class="python">obj_text = codecs.open(file_path, 'r', encoding='utf-8').read()</code>
<code class="python">b_new = json.loads(obj_text)</code>
<code class="python">a_new = np.array(b_new)</code>
結論
JSON シリアル化の必要性を理解し、「.tolist()」を使用することによってメソッドを使用すると、NumPy 配列と Django の間のギャップをシームレスに埋めることができます。これにより、NumPy 配列をコンテキスト変数として簡単に保存および取得できるようになり、Web アプリケーションに高度なデータ操作機能を提供できるようになります。
以上がDjango で NumPy 配列を JSON にシリアル化できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。