Поскольку записи имеют фиксированную длину (16-разрядные целые числа со знаком) и вы знаете размер сетки (1201 x 1201 или 3601x3601), модуль Python struct кажется идеально подходящим (непроверенный код):
from struct import unpack,calcsize
# 'row_length' being 1201 or 3601 and 'row' being the raw data for one row
def read_row( row, row_length ):
format = 'h' # h stands for signed short
for i in range(0, row_length):
offset = i * calcsize(format)
(height,) = unpack(format, row[offset : offset+calcsize(format))
# do something with the height
Описывая его в более общих терминах, в основном вы хотите прочитать файл по 2 байта за раз, проанализировать прочитанные байты как 16-разрядное целое число со знаком и обработать его. Поскольку вы уже знаете размер сетки, вы можете читать ее построчно или любым другим способом, который удобен для вашего приложения. Это также означает, что вы можете произвольно искать конкретные координаты внутри файла данных.