JSON용 NumPy 배열 직렬화 처리
Django 프레임워크를 사용하여 웹 개발에서 NumPy 배열로 작업할 때 다음 오류가 발생할 수 있습니다.
array([ 0, 239, 479, 717, 952, 1192, 1432, 1667], dtype=int64) is not JSON serializable
이 오류는 NumPy 배열이 기본적으로 JSON 직렬화 가능하지 않기 때문에 발생합니다. 널리 사용되는 데이터 교환 형식인 JSON은 이러한 유형의 정수, 문자열 및 배열과 같은 특정 데이터 유형만 지원합니다. 그러나 NumPy 배열은 JSON으로 직접 표현할 수 없는 복잡한 다차원 개체입니다.
해결책: JSON용 NumPy 배열 변환
이 문제를 해결하려면 NumPy 배열을 JSON 호환 표현으로 변환합니다. 권장되는 방법은 배열에서 .tolist() 메서드를 사용하는 것입니다.
<code class="python">import numpy as np a = np.arange(10).reshape(2,5) # Create a 2x5 array b = a.tolist() # Convert to a list of lists</code>
.tolist() 메서드는 NumPy 배열을 JSON과 호환되는 중첩된 요소 목록으로 변환합니다.
JSON 데이터 저장 및 로드
변환된 목록을 JSON 형식으로 저장하려면 다음 코드를 사용하세요.
<code class="python">import codecs, json file_path = "/path/to/file.json" json.dump(b, codecs.open(file_path, 'w', encoding='utf-8'), separators=(',', ':'), sort_keys=True, indent=4)</code>
이 코드는 b를 적절한 형식으로 지정된 경로에 JSON 파일로 나열합니다.
JSON 파일에서 NumPy 배열을 로드하고 재구성하려면:
<code class="python">new_b = json.loads(codecs.open(file_path, 'r', encoding='utf-8').read()) new_a = np.array(new_b)</code>
이 코드는 JSON 파일을 읽고 변환합니다. new_b 목록으로 다시 돌아갑니다. 그런 다음 np.array() 함수는 NumPy 배열 new_a를 재구성합니다.
결론
NumPy 배열을 JSON 호환 목록으로 변환하고 적절한 JSON 직렬화 및 역직렬화 방법을 사용합니다. 를 사용하면 Django 컨텍스트 변수에서 NumPy 데이터의 저장 및 검색을 효과적으로 처리할 수 있습니다. 이를 통해 Django 백엔드와 렌더링을 위한 프런트엔드 간에 데이터를 안전하고 효율적으로 전송할 수 있습니다.
위 내용은 Django에서 JSON용 NumPy 배열을 어떻게 직렬화합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!