Мне нужно перевести Matlab fread на python, в частности, позволяя читать в 2d-массив и пропускать данные во время чтения. Я придумал следующее, но я думаю, что могут быть более эффективные и «пуфонические» способы сделать это (я ни в коем случае не программист). Любое предложение? Обратите внимание, что я не могу прочитать весь файл, а затем подвыбрать массив, поскольку файлы, которые нужно читать, слишком велики.Эффективный перевод на python matlab fread
def FromFileSkip(fid, count=1, skip=0, dtype=np.float32):
if np.ndim(count)==0:
if skip>=0:
data = np.zeros(count, dtype=dtype)
k = 0
while k<count:
data[k] = np.fromfile(fid, count=1, dtype=dtype)
fid.seek(skip, 1)
k +=1
return data
elif np.ndim(count)==1:
if skip>0:
data = np.zeros(count, dtype=dtype)
k = 0
while k<count[1]:
data[:,k] = np.fromfile(fid, count=count[0], dtype=dtype)
fid.seek(skip, 1)
k +=1
return data
else:
raise ValueError('File can be read only into 1d or 2d arrays')
Возможно, вы только что обновили свой исходный вопрос с дополнительной информацией, а не удалили его – Dhara