Каков наилучший способ изменить порядок строк в большом двоичном файле? - PullRequest
0 голосов
/ 27 марта 2020

У меня есть несколько больших файлов данных (32 x ОЧЕНЬ БОЛЬШИХ), которые я хотел бы объединить. Однако данные были собраны в неправильном порядке, поэтому мне нужно также изменить порядок строк.

Пока что я делаю следующее:

# Assume FILE_1 and FILE_2 are paths to the appropriate files.
# FILE_1 is a matrix of size 32 x SIZE_1
# FILE_2 is a matrix of size 32 x SIZE_2
data_1 = np.memmap(FILE_1, mode='r', dtype='<i2', order='F', shape=(32, SIZE_1))
data_2 = np.memmap(FILE_2, mode='r', dtype='<i2', order='F', shape=(32, SIZE_2))

data_out = np.memmap('output', mode='w+', dtype='<i2', order='F', shape=(32, SIZE_1 + SIZE_2))

channel_mapping = [15, 14, 13, 12, 11, 10, 9, 8, 0, 1, 2, 3, 4, 5, 6, 7,
                   24, 25, 26, 27, 28, 29, 30, 31, 23, 22, 21, 20, 19, 18, 17, 16]

data_out[:SIZE_1, :] = data_1[:, channel_mapping]
data_out[SIZE_1:SIZE_2, :] = data_2[:, channel_mapping]

Я действительно делаю это в a для l oop с более чем 2 файлами, но вы поняли.

Это самый эффективный способ сделать это? Я боюсь, что приложение channel_mapping запишет данные в память и замедлит весь процесс. На самом деле, это намного медленнее, чем просто конкатенация файлов.

...