[Python] 객체 데이터 저장하고 불러오기

2024. 11. 20. 22:59Developers 공간 [Shorts]/Software Basic

728x90
반응형
<분류>
A. 수단
- OS/Platform/Tool : Linux, Kubernetes(k8s), Docker, AWS
- Package Manager : node.js, yarn, brew, 
- Compiler/Transpillar : React, Nvcc, gcc/g++, Babel, Flutter

- Module Bundler  : React, Webpack, Parcel

B. 언어
- C/C++, python, Javacsript, Typescript, Go-Lang, CUDA, Dart, HTML/CSS

C. 라이브러리 및 프레임워크 및 SDK
- OpenCV, OpenCL, FastAPI, PyTorch, Tensorflow, Nsight

 


1. What? (현상)

 

이번 글에서는 list, numpy, torch 등 다양한 객체 데이터를 저장하고 불러오는 것을 정리하고자 합니다.


2. Why? (원인)

  • X

3. How? (해결책)

 

먼저 객체 데이터를 저장하고 불러올 경로를 만들어주겠습니다.

from pathlib import Path

Path("./folder").mkdir(parents=True, exist_ok=True)

 

 

1. Python List

 

먼저 파이썬에서 내장된 객체 데이터를 선언해보겠습니다. 

d = {'name':'Andrew K. Johnson', 
	'score': 199, 
    'location':[38.189323, 127.3495672]}

l = [1,2,3,4]

 

저장시에는 pickle을 사용해 아래와 같이 저장합니다.

import pickle

with open("./folder/test", "wb") as fp:   #Pickling
	pickle.dump(l, fp)

 

불러오기는 아래와 같습니다.

with open("./folder/test", "rb") as fp:   # Unpickling
	loaded = pickle.load(fp)

 

2. Numpy


numpy에서 사용하는 객체 데이터를 선언하겠습니다.

import numpy as np

x = np.array([0, 1, 2, 3, 4])

 

저장은 아래와 같이 합니다.

.npy는 단순히 바이너리 파일로 저장하는 것이지만, .npz는 여러개의 객체를 아래와 같이 positional arguments로 넘겨 압축되지 않은 파일로 저장할 때 사용하는 포맷입니다.

np.save('./folder/test', x)  # save to .npy

np.savez('./folder/test', mine=x) # save to .npz
np.savez_compressed('./folder/test', mine=x) # save to .npz

 

불러올 때는 아래와 같이 불러옵니다.


loaded = np.load('./folder/test.npy')

f = np.load('./folder/test.npz')
loaded = f['mine']
f.close()

 

3. Torch


pytorch tensor를 먼저 선언하겠습니다.

import torch

a = torch.randn(2, 2)

 

저장은 아래와 같이 합니다.

torch.save(a, './folder/test.npy')

 

불러올 때는 아래와 같이 불러옵니다.

loaded = torch.load('./folder/test.npy')

 


 

728x90
반응형