본문 바로가기
Python/Python FAQ

Python NumPy 배열은 JSON으로 직렬화할 수 없습니다., NumPy array is not JSON serializable

by 베타코드 2023. 12. 5.
반응형

질문


NumPy 배열을 생성한 후 Django 컨텍스트 변수로 저장한 후, 웹페이지를 로드할 때 다음과 같은 오류가 발생합니다:

array([   0,  239,  479,  717,  952, 1192, 1432, 1667], dtype=int64)은(는) JSON 직렬화할 수 없습니다.

이게 무슨 뜻인가요?


답변


나는 정기적으로 np.arrays를 "jsonify"합니다. 먼저 배열에 ".tolist()" 메소드를 사용해보세요. 다음과 같이:

import numpy as np
import codecs, json 

a = np.arange(10).reshape(2,5) # 2 by 5 배열
b = a.tolist() # 동일한 데이터와 인덱스를 가진 중첩 리스트
file_path = "/path.json" ## 경로 변수
json.dump(b, codecs.open(file_path, 'w', encoding='utf-8'), 
          separators=(',', ':'), 
          sort_keys=True, 
          indent=4) ### 이렇게 하면 배열을 .json 형식으로 저장합니다.

배열을 "unjsonify"하기 위해 다음을 사용하세요:

obj_text = codecs.open(file_path, 'r', encoding='utf-8').read()
b_new = json.loads(obj_text)
a_new = np.array(b_new)
반응형

댓글