>  기사  >  백엔드 개발  >  Numpy 배열을 저장하고 읽는 방법

Numpy 배열을 저장하고 읽는 방법

php中世界最好的语言
php中世界最好的语言원래의
2018-04-09 15:53:223218검색

이번에는 Numpy 배열 을 저장하고 읽는 방법과 Numpy 배열을 저장하고 읽는 주의 사항 에 대해 설명하겠습니다.

1. 배열은 바이너리 형식으로 저장됩니다.

np.save와 np.load는 디스크 배열 데이터를 읽고 쓰는 두 가지 주요 함수입니다. 기본적으로 배열은 확장자가 npy인 파일에 압축되지 않은 원시 바이너리 형식으로 저장됩니다. 배열 a를 예로 들면

np.save("filename.npy",a)
b = np.load("filename.npy")

이 방법을 사용하면 저장된 파일의 접미사 이름이 확실히 .npy

로 설정됩니다. . 텍스트 파일에 액세스

np.savetxt 및 np.loadtxt를 사용하면 1차원 및 2차원 배열만 읽고 쓸 수 있습니다.

np.savetxt: 특정 구분 기호로 구분된 텍스트로 배열을 씁니다.

파일의 np.loadtxt: 텍스트 파일을 배열로 읽으려면 특정 구분 기호를 지정하세요.

np.savetxt("filename.txt",a)
b = numpy.loadtxt("filename.txt", delimiter=',')

3. 바이너리 파일로 저장하세요.

배열의 tofile 기능을 사용하여 배열을 편리하게 변환하세요. 데이터는 바이너리 형식으로 파일에 기록됩니다.

a.tofile("filename.bin")
b = np.fromfile("filename.bin",dtype = **)

이 방법은 np.save와 몇 가지 차이점이 있습니다.

tofile 함수는 배열을 바이너리 파일로만 저장할 수 있으며 파일 접미사 이름에는 고정된 요구 사항이 없습니다. . 이 저장 방법에는 데이터 읽기에 대한 요구 사항이 있습니다. np.fromfile은 읽은 데이터의 dtype을 수동으로 지정해야 합니다. 지정된 형식이 저장할 때의 형식과 일치하지 않으면 잘못된 데이터를 읽게 됩니다.

tofile 함수는 현재 데이터의 행 및 열 정보를 저장할 수 없습니다. 배열 순서가

C 언어 형식이든 Fortran 언어 형식이든 관계없이 C 언어 형식이 출력에 사용됩니다. 따라서 np.fromfile을 사용하여 읽어낸 데이터는 1차원 배열이므로 행과 열 정보를 지정하려면 reshape를 사용해야 합니다.

예를 들어 다음 예와 같습니다.

>>> a = np.arange(0,12)
>>> a.shape = 3,4
>>> a
array([[ 0, 1, 2, 3],
    [ 4, 5, 6, 7],
    [ 8, 9, 10, 11]])
>>> a.tofile("a.bin")
>>> b = np.fromfile("a.bin", dtype=np.float) # 按照float类型读入数据
>>> b # 读入的数据是错误的
array([ 2.12199579e-314,  6.36598737e-314,  1.06099790e-313,
     1.48539705e-313,  1.90979621e-313,  2.33419537e-313])
>>> a.dtype # 查看a的dtype
dtype('int32')
>>> b = np.fromfile("a.bin", dtype=np.int32) # 按照int32类型读入数据
>>> b # 数据是一维的
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])
>>> b.shape = 3, 4 # 按照a的shape修改b的shape
>>> b
array([[ 0, 1, 2, 3],
    [ 4, 5, 6, 7],
    [ 8, 9, 10, 11]])
이 기사의 사례를 읽은 후 방법을 마스터했다고 생각합니다. 더 흥미로운 정보를 보려면 PHP 중국어의 다른 관련 기사를 주목하세요. 웹사이트!

추천 자료:

Python Numpy가 배열과 행렬을 작동하는 방법

Python은 최대 공약수를 푸는 방법을 구현합니다

위 내용은 Numpy 배열을 저장하고 읽는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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