netcdf_file#
- класс scipy.io.netcdf_file(filename, mode='r', mmap=None, версия=1, maskandscale=False)[источник]#
Файловый объект для данных NetCDF.
A
netcdf_fileобъект имеет два стандартных атрибута: измерения и переменные. Значения обоих являются словарями, сопоставляющими имена измерений с соответствующими длинами и имена переменных с переменными, соответственно. Прикладные программы никогда не должны изменять эти словари.Все остальные атрибуты соответствуют глобальным атрибутам, определенным в файле NetCDF. Глобальные атрибуты файла создаются путем присваивания атрибуту объекта
netcdf_fileобъект.- Параметры:
- filenameстрока или файлоподобный объект
строка -> имя файла
- mode{'r', 'w', 'a'}, опционально
режим чтения-записи-дополнения, по умолчанию 'r'
- mmapNone или bool, необязательно
Использовать ли mmap filename при чтении. По умолчанию True когда filename является именем файла, False когда filename является файлоподобным объектом. Обратите внимание, что при использовании mmap возвращаемые массивы данных ссылаются непосредственно на mmapped данные на диске, и файл нельзя закрыть, пока существуют ссылки на него.
- версия{1, 2}, необязательно
версия netcdf для чтения / записи, где 1 означает Классический формат и 2 означает 64-битный формат смещения. По умолчанию 1. См. здесь для получения дополнительной информации.
- maskandscalebool, необязательно
Автоматически масштабировать и/или маскировать данные на основе атрибутов. По умолчанию False.
Методы
close()Закрывает файл NetCDF.
createDimension(name, length)Добавляет измерение в раздел Dimension структуры данных NetCDF.
createVariable(имя, тип, размерности)Создать пустую переменную для
netcdf_fileобъект, указывающий его тип данных и используемые измерения.flush()Выполнить синхронизацию с диском, если
netcdf_fileобъект находится в режиме записи.sync()Выполнить синхронизацию с диском, если
netcdf_fileобъект находится в режиме записи.Примечания
Этот модуль получен из pupynere. Основное преимущество этого модуля перед другими модулями заключается в том, что он не требует связывания кода с библиотеками NetCDF. Однако для более новой версии стандарта NetCDF и дополнительных функций рассмотрите лицензию с разрешительными условиями netcdf4-python.
Файлы NetCDF — это самодокументируемый двоичный формат данных. Файл содержит метаданные, описывающие размерности и переменные в файле. Более подробная информация о файлах NetCDF может быть найдена здесь. Существует три основных раздела в структуре данных NetCDF:
Размерности
Переменные
Атрибуты
Раздел измерений записывает имя и длину каждого измерения, используемого переменными. Переменные затем указывают, какие измерения они используют, и любые атрибуты, такие как единицы данных, вместе с содержанием значений данных для переменной. Рекомендуется включать переменную с тем же именем, что и измерение, чтобы предоставить значения для этой оси. Наконец, раздел атрибутов содержит дополнительную информацию, такую как имя создателя файла или инструмент, использованный для сбора данных.
При записи данных в файл NetCDF часто возникает необходимость указать 'измерение записи'. Измерение записи — это неограниченное измерение для переменной. Например, переменная температуры может иметь измерения широты, долготы и времени. Если нужно добавлять больше данных о температуре в файл NetCDF по мере прогрессирования времени, то измерение времени переменной температуры должно быть помечено как измерение записи.
Кроме того, заголовок файла NetCDF содержит позицию данных в файле, что позволяет осуществлять доступ эффективным образом без загрузки ненужных данных в память. Он использует
mmapмодуль для создания массивов Numpy, отображенных на данные на диске, для той же цели.Обратите внимание, что когда
netcdf_fileиспользуется для открытия файла с mmap=True (по умолчанию для чтения), массивы, возвращаемые им, ссылаются на данные непосредственно на диске. Файл не должен быть закрыт и не может быть корректно закрыт при запросе, если такие массивы активны. Возможно, вам потребуется скопировать массивы данных, полученные из mmapped Netcdf файла, если они будут обрабатываться после закрытия файла, см. пример ниже.Примеры
Чтобы создать файл NetCDF:
>>> from scipy.io import netcdf_file >>> import numpy as np >>> f = netcdf_file('simple.nc', 'w') >>> f.history = 'Created for a test' >>> f.createDimension('time', 10) >>> time = f.createVariable('time', 'i', ('time',)) >>> time[:] = np.arange(10) >>> time.units = 'days since 2008-01-01' >>> f.close()
Обратите внимание на присвоение
arange(10)totime[:]. Предоставление среза временной переменной позволяет устанавливать данные в объекте, а не предоставлятьarange(10)перезаписатьtimeпеременная.Чтобы прочитать файл NetCDF, который мы только что создали:
>>> from scipy.io import netcdf_file >>> f = netcdf_file('simple.nc', 'r') >>> print(f.history) b'Created for a test' >>> time = f.variables['time'] >>> print(time.units) b'days since 2008-01-01' >>> print(time.shape) (10,) >>> print(time[-1]) 9
Файлы NetCDF, открытые только для чтения, возвращают массивы, которые ссылаются непосредственно на данные, отображенные в память на диске:
>>> data = time[:]
Если данные нужно обработать после закрытия файла, их необходимо скопировать в основную память:
>>> data = time[:].copy() >>> del time >>> f.close() >>> data.mean() 4.5
Файл NetCDF также может использоваться как контекстный менеджер:
>>> from scipy.io import netcdf_file >>> with netcdf_file('simple.nc', 'r') as f: ... print(f.history) b'Created for a test'