Python NumPy 배열 저장 및 로드 방법
np.save() 및 np.load() 사용하기
NumPy 배열을 저장하는 가장 간단한 방법은 np.save()
함수를 사용하는 것입니다. 이 함수는 배열을 .npy
확장자를 가진 바이너리 파일로 저장합니다. 배열을 로드하려면 np.load()
함수를 사용합니다.
# 배열 저장
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
np.save('my_array.npy', arr)
# 배열 로드
arr = np.load('my_array.npy')
print(arr)
# [[1 2 3]
# [4 5 6]]
pickle 사용하기
pickle
모듈은 Python 객체를 직렬화하고 역직렬화하는 데 사용할 수 있습니다. NumPy 배열을 포함한 모든 Python 객체를 저장하는 데 사용할 수 있습니다.
# 배열 저장
import pickle
arr = np.array([[1, 2, 3], [4, 5, 6]])
with open('my_array.pkl', 'wb') as f:
pickle.dump(arr, f)
# 배열 로드
with open('my_array.pkl', 'rb') as f:
arr = pickle.load(f)
print(arr)
# [[1 2 3]
# [4 5 6]]
HDF5 사용하기
HDF5는 과학 데이터를 저장하기 위한 표준 파일 형식입니다. NumPy 배열을 포함한 다양한 데이터 유형을 저장하는 데 사용할 수 있습니다.
# 배열 저장
import h5py
arr = np.array([[1, 2, 3], [4, 5, 6]])
with h5py.File('my_array.hdf5', 'w') as f:
f.create_dataset('data', data=arr)
# 배열 로드
with h5py.File('my_array.hdf5', 'r') as f:
arr = f['data'][:]
print(arr)
# [[1 2 3]
# [4 5 6]]
npz 파일 사용하기
NumPy 배열을 저장하는 또 다른 방법은 .npz
확장자를 가진 압축된 바이너리 파일을 사용하는 것입니다. 이 파일에는 여러 개의 배열을 저장할 수 있습니다.
# 배열 저장
import numpy as np
arr1 = np.array([[1, 2, 3], [4, 5, 6]])
arr2 = np.array(['a', 'b', 'c'])
np.savez('my_arrays.npz', arr1=arr1, arr2=arr2)
# 배열 로드
data = np.load('my_arrays.npz')
arr1 = data['arr1']
arr2 = data['arr2']
print(arr1)
# [[1 2 3]
# [4 5 6]]
print(arr2)
# ['a' 'b' 'c']
저장 방법 선택
사용할 저장 방법은 특정 요구 사항에 따라 다릅니다.
- 간편함:
np.save()
및np.load()
는 NumPy 배열을 저장하고 로드하는 가장 간단한 방법입니다. - 호환성:
pickle
은 Python 객체를 저장하는 데 사용할 수 있는 보편적인 모듈입니다. - 효율성: HDF5는 대규모 데이터 세트를 저장하는 데 더 효율적입니다.
- 압축:
.npz
파일은 여러 개의 배열을 저장하고 공간을 절약하기 위해 압축할 수 있습니다.
예제 코드
# 배열 저장
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
np.save('my_array.npy', arr)
# 배열 로드
arr = np.load('my_array.npy')
print(arr)
# [[1 2 3]
# [4 5 6]]
# 배열 저장
import pickle
arr = np.array([[1, 2, 3], [4, 5, 6]])
with open('my_array.pkl', 'wb') as f:
pickle.dump(arr, f)
# 배열 로드
with open('my_array.pkl', 'rb') as f:
arr = pickle.load(f)
print(arr)
# [[1 2 3]
# [4 5 6]]
# 배열 저장
import h5py
arr = np.array([[1, 2, 3], [4, 5, 6]])
with h5py.File('my_array.hdf5', 'w') as f:
f.create_dataset('data', data=arr)
# 배열 로드
with h5py.File('my_array.hdf5', 'r') as f:
arr = f['data'][:]
print(arr)
# [[1 2 3]
# [4 5 6]]
# 배열 저장
import numpy as np
arr1 = np.array([[1, 2, 3], [4, 5, 6]])
arr2 = np.array(['a', 'b', 'c'])
np.savez('my_arrays.npz', arr1=arr1, arr2=arr2)
# 배열 로드
data = np.load('my_arrays.npz')
arr1 = data['arr1']
arr2 = data['arr2']
print(arr1)
# [[1 2 3]
# [4 5 6]]
print(arr2)
# ['a' 'b' 'c']
NumPy 배열 저장 및 로드 대체 방법
CSV(Comma-Separated Values) 파일은 쉼표로 구분된 값으로 구성된 텍스트 파일입니다. NumPy 배열을 CSV 파일로 저장하려면 np.savetxt()
함수를 사용할 수 있습니다.
# 배열 저장
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
np.savetxt('my_array.csv', arr, delimiter=',')
# 배열 로드
arr = np.loadtxt('my_array.csv', delimiter=',')
print(arr)
# [[1. 2. 3.]
# [4. 5. 6.]]
JSON 사용하기
JSON(JavaScript Object Notation)은 데이터 교환을 위한 인기 있는 텍스트 형식입니다. NumPy 배열을 JSON 파일로 저장하려면 json.dumps()
함수를 사용할 수 있습니다.
# 배열 저장
import numpy as np
import json
arr = np.array([[1, 2, 3], [4, 5, 6]])
with open('my_array.json', 'w') as f:
json.dump(arr.tolist(), f)
# 배열 로드
import json
with open('my_array.json', 'r') as f:
arr = np.array(json.load(f))
print(arr)
# [[1 2 3]
# [4 5 6]]
Feather format 사용하기
Feather format은 Apache Arrow 프로젝트에서 개발한 열 형식 데이터 파일 형식입니다. NumPy 배열을 Feather 파일로 저장하려면 pyarrow.feather.write_feather()
함수를 사용할 수 있습니다.
# 배열 저장
import numpy as np
import pyarrow
arr = np.array([[1, 2, 3], [4, 5, 6]])
pyarrow.feather.write_feather(arr, 'my_array.feather')
# 배열 로드
import pyarrow
arr = pyarrow.feather.read_feather('my_array.feather')
print(arr)
# [[1 2 3]
# [4 5 6]]
Parquet format 사용하기
# 배열 저장
import numpy as np
import pyarrow
arr = np.array([[1, 2, 3], [4, 5, 6]])
table = pyarrow.Table.from_array(arr)
pyarrow.parquet.write_table(table, 'my_array.parquet')
# 배열 로드
import pyarrow
table = pyarrow.parquet.read_table('my_array.parquet')
arr = table.to_numpy()
print(arr)
# [[1 2 3]
# [4 5 6]]
방법 선택
- 간편함: CSV 파일은 NumPy 배열을 저장하는 가장 간단한 방법입니다.
- 호환성: JSON은 다양한 프로그래밍 언어에서 사용할 수 있는 인기 있는 형식입니다.
- 효율성: Feather format and Parquet format은 대규모 데이터 세트를 저장하는 데 더 효율적입니다.
python arrays numpy