Мне нужно перевести Matlab fread на python, в частности, разрешить чтение в двумерный массив и пропустить данные при чтении. Я придумал следующее, но я думаю, что могут быть более эффективные и «питоновские» способы сделать это (я ни в коем случае не программист). Любое предложение? Обратите внимание, что я не могу прочитать весь файл, а затем выполнить подвыборку массива, поскольку файлы для чтения слишком велики.
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')