ホームページ  >  記事  >  バックエンド開発  >  JSON 互換性のために Django で NumPy 配列をシリアル化する方法は?

JSON 互換性のために Django で NumPy 配列をシリアル化する方法は?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-03 16:06:30670ブラウズ

How to Serialize NumPy Arrays in Django for JSON Compatibility?

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。