NumPy 數組和JSON 序列化:揭開謎團
使用NumPy 數組和Django 時,您可能會遇到神秘錯誤「NumPy數組不可JSON 序列化。
為了理解這個問題,我們深入研究 JSON 序列化領域。 JavaScript 物件表示法 (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中文網其他相關文章!