Я пытаюсь обрабатывать данные, хранящиеся в текстовом файле, который выглядит как этот test.dat
:Как читать только определенные строки из текстового файла?
-1411.85 2.6888 -2.09945 -0.495947 0.835799 0.215353 0.695579
-1411.72 2.82683 -0.135555 0.928033 -0.196493 -0.183131 -0.865999
-1412.53 0.379297 -1.00048 -0.654541 -0.0906588 0.401206 0.44239
-1409.59 -0.0794765 -2.68794 -0.84847 0.931357 -0.31156 0.552622
-1401.63 -0.0235102 -1.05206 0.065747 -0.106863 -0.177157 -0.549252
....
....
файл, однако, несколько Гб, и я бы очень хотел, чтобы прочитать его, в небольших блоках строк. Я хотел бы использовать функцию numpy's
loadtxt
, так как это быстро преобразует все в numpy array
. Тем не менее, я не был в состоянии управлять до сих пор, как функция, кажется, только предлагают выбор столбцов, как здесь:
data = np.loadtxt("test.dat", delimiter=' ', skiprows=1, usecols=range(1,7))
Любые идеи, как этого добиться? Если невозможно с loadtxt
любые другие варианты, доступные в Python
?
loadtxt аргумент fname может быть генератором, поэтому для чтения небольших блоков строк используется генератор чтения файла, такой как показано в ответе nosklo в http://stackoverflow.com/questions/519633/lazy-method-for-reading-big -file-in-python, но преобразуется для чтения только небольшого количества строк вместо байтов. –
См. Также: http://stackoverflow.com/a/27962976/901925 - 'Самый быстрый способ читать каждую n-ю строку с genfromtxt numpy' – hpaulj