python 저장 대형.mat 데이터 파일 오류가 IO 제한을 초과한 작업
예를 들어 h5 파일
import h5py
def h5_data_write(train_data, train_label, test_data, test_label, shuffled_flag):
print("h5py ...")
save_path = "../save_test/" + "train_test_split_data_label_" + shuffled_flag + ".h5"
with h5py.File(save_path, 'w') as f:
f.create_dataset('train_data', data=train_data)
f.create_dataset('train_label', data=train_label)
f.create_dataset('test_data', data=test_data)
f.create_dataset('test_label', data=test_label)
print("h5py !")
def h5_data_read(filename):
"""
keys() :
f['key_name'] :
"""
file = h5py.File(filename,'r')
train_data = file['train_data'][:]
train_label = file['train_label'][:]
test_data = file['test_data'][:]
test_label = file['test_label'][:]
return train_data, train_label, test_data, test_label
추가:python을 통해 MATLAB 데이터 파일 읽기*.mat배경
deeplearning을 하는 과정에서caffe의 프레임워크를 사용하고 일반적으로 matlab를 사용하여 그림을 처리합니다(matlab 처리 그림은 상대적으로 간단하고 효율적입니다),python으로 필요한lmdb 파일을 생성하고test를 통해 결과를 생성합니다.
그래서 어떤 matlab가 그림에서 처리한 label 정보는 모두.mat 파일은python에서 읽을 수 있고python에서 발생하는 결과 정보도 matlab에서 진일보한 처리를 해야 한다. (물론 txt를 사용해도 구조 정보를 스스로 처리하는 것이 귀찮지 않다.)
소개
matlab와python 간의 데이터 전송은 일반적으로 matlab의 파일 형식을 기반으로 합니다.mat,python에서numpy와scipy는 함수를 제공하여 잘 맞출 수 있습니다.mat 파일의 데이터를 읽고 처리합니다.
여기서numpy작용은 Array기능영사matlab의 Matrix를 제공하고scipy는 두 함수인loadmat과savemat을 제공하여 읽기와 쓰기를 합니다.mat 파일.
다음은 간단한 테스트 프로그램입니다.
구체적인 함수 사용법은 도움말 문서를 볼 수 있습니다.
import scipy.io as sio
import matplotlib.pyplot as plt
import numpy as np
#matlab
matfn=u'E:/python/ /162250671_162251656_1244.mat'
data=sio.loadmat(matfn)
plt.close('all')
xi=data['xi']
yi=data['yi']
ui=data['ui']
vi=data['vi']
plt.figure(1)
plt.quiver( xi[::5,::5],yi[::5,::5],ui[::5,::5],vi[::5,::5])
plt.figure(2)
plt.contourf(xi,yi,ui)
plt.show()
sio.savemat('saveddata.mat', {'xi': xi,'yi': yi,'ui': ui,'vi': vi})
예제 2
import scipy.io as sio
import numpy as np
### python .mat ###
load_fn = 'xxx.mat'
load_data = sio.loadmat(load_fn)
load_matrix = load_data['matrix'] # matrix, matlab save(load_fn, 'matrix'); save(load_fn, 'matrix_x', 'matrix_y', ...);
load_matrix_row = load_matrix[0] # matlab matrix ,python
### python .mat matlab ###
save_fn = 'xxx.mat'
save_array = np.array([1,2,3,4])
sio.savemat(save_fn, {'array': save_array}) # , array
save_array_x = np.array([1,2,3,4])
save_array_y = np.array([5,6,7,8])
sio.savemat(save_fn, {'array_x': save_array_x, 'array_x': save_array_x}) # ,
앞으로의 목표는 주로 기존의 Matlab 데이터(.mat 또는.txt)를 이용하는 것을 감안하여 주로python이 Matlab 데이터를 가져오는 문제를 고려한다.다음 코드는python 읽기를 해결할 수 있습니다.mat 파일의 문제입니다.주로sicpy를 사용합니다.io면 됩니다.
sicpy.io는 두 개의 함수loadmat과savemat을 제공하여 매우 편리하다.
# adapted from http://blog.csdn.net/rumswell/article/details/8545087
import scipy.io as sio
#import matplotlib.pyplot as plt
from pylab import *
import numpy as np
matfn='E:\\Pythonrun\\myuse\\matdata.mat' # the path of .mat data
data=sio.loadmat(matfn)
xx=data['matdata']
figure(1)
plot(xx)
show()
다음 코드는 txt 데이터를 읽고 수조로 전환하는 것입니다. 방법이 비교적 둔하고 효과적인 방법은 연구해야 합니다.
from numpy import *
def file2list(filename):
fr = open(filename)
array = fr.readlines() # , list
num = len(array)
returnMat = zeros((num,3))# 0 , , , 3,
index = 0
for line in array:
line = line.strip()#
linelist = line.split(' ')# ,
returnMat[index,:] = linelist[0:3]# ,
index +=1
return returnMat
fname = 'E:\\Pythonrun\\myuse\
um_data.txt'
data= file2list(fname)
추가: Python 읽기 및 쓰기 Matlab Mat 형식 데이터1. 비matlab v7.3 파일 읽기와 쓰기
import scipy.io as sio
import numpy
# matFile
matFile = 'matlabdata.mat'
datas = sio.loadmat(matFile)
# matFile
# mat matlabdata
matlabdata = datas['matlabdata']
# matFile
save_matFile = 'save_matlabdata.mat'
save_matlabdata = np.array([1,2,3,4,5])
sio.savemat(save_matFile, {'array':save_matlabdata})
2. matlab v7.3 파일 읽기
matlab가 데이터를 저장할 때'-v7.3',scipy를 사용합니다.io.loadmat 함수로 데이터를 로드하면 오류가 발생합니다.
File "/usr/local/lib/python2.7/dist-packages/scipy/io/matlab/mio.py", line 64, in mat_reader_factory
raise NotImplementedError('Please use HDF reader for matlab v7.3 files')
NotImplementedError: Please use HDF reader for matlab v7.3 files
사용 가능:
import h5py
with h5py.File('matlabdata.mat', 'r') as f:
f.keys() # matlabdata.mat
datas = h5py.File('matlabdata.mat')['matlabdata'].value
이상의 개인적인 경험으로 여러분께 참고가 되었으면 좋겠습니다. 또한 많은 응원 부탁드립니다.만약 잘못이 있거나 완전한 부분을 고려하지 않으신다면 아낌없이 가르침을 주시기 바랍니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.