English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

NumPy IO

NumPy는 ndarray 객체에 간단한 파일 형식을 도입했습니다: npy.

npy 파일은 ndarray를 재구성하는 데 필요한 데이터, 그래픽, dtype 및 다른 정보를 저장합니다.

일반적인 IO 함수는 다음과 같습니다:

load()와 save() 함수는 파일 배열 데이터를 읽고 쓰는 두 가지 주요 함수입니다. 기본적으로 배열은 확장자가 .npy인 파일에 압축되지 않은 원시 이진 형식으로 저장됩니다. save() 함수는 여러 배열을 파일에 쓰는 데 사용되며, 기본적으로 배열은 확장자가 .npz인 파일에 압축되지 않은 원시 이진 형식으로 저장됩니다. loadtxt()와 savetxt() 함수는 일반 텍스트 파일(.txt 등)을 처리합니다.

numpy.save()

numpy.save() 함수는 .npy 확장자로 파일에 배열을 저장합니다.
numpy.save(file, arr, allow_pickle=True, fix_imports=True)

파라미터 설명:

file: 저장할 파일, 확장자는 .npy입니다. 파일 경로 끝에 확장자 .npy가 없으면 자동으로 추가됩니다. arr: 저장할 배열 allow_pickle: 선택 가능, 보이는 값, Python pickles를 사용하여 객체 배열을 저장할 수 있습니다. Python에서 pickle은 파일에 저장하거나 파일에서 읽기 전에 객체를 시리얼라이즈하고 역시리얼라이즈하는 데 사용됩니다. fix_imports: 선택 사항, Python을 쉽게 사용하기 위해2 에서 Python3 저장된 데이터
 import numpy as np 
  
 a = np.array([1,2,3,4,5]) 
  
 # test.npy 파일에 저장
 np.save('test.npy',a) 
  
 # test에 저장1.npy 파일에 저장된다면 파일 경로의 끝에 확장자가 없다면

 np.save('test1.npy',a)

파일 내용을 확인할 수 있습니다:

 $ cat test.npy 
 ?NUMPYv{'descr': '<i8', 'fortran_order': False, 'shape': (5,),
} 
 $ cat test1.npy 
 ?NUMPYv{'descr': '<i8', 'fortran_order': False, 'shape': (5,),
}

파일은 Numpy 전용 바이너리 형식의 데이터이기 때문에 망가진 문자로 보입니다。

load() 함수를 사용하여 데이터를 읽으면 정상적으로 표시됩니다:

import numpy as np 
b = np.load('test.npy') 
print(b)

출력 결과는 다음과 같습니다:

[1 2 3 4 5]

np.savez

numpy.savez() 함수는 npz 확장자로 저장된 파일에 여러 배열을 저장합니다。

numpy.savez(file, *args, **kwds)

파라미터 설명:

file:저장할 파일은 확장자 .npz,파일 경로의 끝에 확장자가 없다면 .npz,이 확장자는 자동으로 추가됩니다。 args: 저장할 배열은 키워드 파라미터로 배열 이름을 지정할 수 있으며, 키워드 파라미터를 전달하지 않은 배열은 자동으로 이름을 부여됩니다 arr_0, arr_1, … . kwds: 저장할 배열은 키워드 이름을 사용
 import numpy as np
 a = np.array([[
1,2,3],[4,5,6])
 b = np.arange(0, 1.0, 0.1)
 c = np.sin(b)
 # c는 키워드 파라미터 sin_array를 사용
 np.savez("w3codebox.npz", a, b, sin_array = c)
 r = np.load("w3codebox.npz) 
 print(r.files) # 각 배열 이름을 확인
 print(r['arr_0']) # 배열 a
 print(r['arr_'])1']) # 배열 b
 print(r['sin_array']) # 배열 c

출력 결과는 다음과 같습니다:

 ['sin_array', 'arr_0', 'arr_']1']
 [[1 2 3]
  [4 5 6]]
 [0. 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9]
 [0. 0.09983342 0.19866933 0.29552021 0.38941834 0.47942554
  0.56464247 0.64421769 0.71735609 0.78332691]

savetxt()

savetxt() 함수는 간단한 텍스트 파일 형식으로 데이터를 저장하며, 데이터를 가져오기 위해 loadtxt() 함수를 사용합니다。

 np.loadtxt(FILENAME, dtype=int, delimiter=' ')
 np.savetxt(FILENAME, a, fmt="%d", delimiter=",")

매개변수 delimiter는 여러 가지 구분자, 특정 열에 대한 변환기능, 건너뛰는 행 등을 지정할 수 있습니다。

 import numpy as np
 a = np.array([1,2,3,4,5]) 
 np.savetxt('out.txt',a) 
 b = np.loadtxt('out.txt') 
  
 print(b)

출력 결과는 다음과 같습니다:

[1. 2. 3. 4. 5.]

delimiter 매개변수 사용

 import numpy as np
 a=np.arange(0,10,0.5).reshape(4,-1)
 np.savetxt("out.txt",a,fmt="%d",delimiter=",") # 정수로 저장으로 변경
 b = np.loadtxt("out.txt",delimiter=",") # load 때도逗号으로 지정해야 합니다
 print(b)
   [[0. 0. 1. 1. 2.]
  [2. 3. 3. 4. 4.]
  [5. 5. 6. 6. 7.]
  [7. 8. 8. 9. 9.]]