>백엔드 개발 >파이썬 튜토리얼 >Django에서 JSON용 NumPy 배열을 어떻게 직렬화합니까?

Django에서 JSON용 NumPy 배열을 어떻게 직렬화합니까?

Patricia Arquette
Patricia Arquette원래의
2024-11-03 15:12:03286검색

How do I serialize NumPy arrays for JSON in Django?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.