NumPy 배열 및 JSON 직렬화: Enigma 공개
NumPy 배열 및 Django로 작업할 때 "NumPy"라는 암호 오류가 발생할 수 있습니다. 배열은 JSON 직렬화가 불가능합니다." 이 당황스러운 메시지는 NumPy 배열을 Django 컨텍스트 변수로 저장하고 웹페이지에 렌더링하려고 할 때 발생합니다.
이 문제를 이해하기 위해 JSON 직렬화의 영역을 탐구합니다. JSON(JavaScript Object Notation)은 데이터 교환 및 저장에 사용되는 널리 사용되는 데이터 형식입니다. 그러나 NumPy 배열은 다차원 배열이므로 JSON으로 직접 변환할 수 없습니다. 여기서 오류가 발생합니다.
해결 방법: .tolist() to the Rescue
이 문제를 해결하기 위해 '.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 배열을 컨텍스트 변수로 쉽게 저장하고 검색할 수 있어 웹 애플리케이션에 고급 데이터 조작 기능이 강화됩니다.
위 내용은 Django에서 NumPy 배열을 JSON으로 직렬화할 수 없는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!