本文简要介绍 python 语言中 scipy.io.netcdf_file
的用法。
用法:
class scipy.io.netcdf_file(filename, mode='r', mmap=None, version=1, maskandscale=False)#
NetCDF 数据的文件对象。
A
netcdf_file
对象有两个标准属性:方面和变量.两者的值都是字典,分别将维度名称映射到它们的关联长度,将变量名称映射到变量。应用程序不应该修改这些字典。所有其他属性对应于 NetCDF 文件中定义的全局属性。全局文件属性是通过分配给
netcdf_file
对象的属性来创建的。- filename: 字符串或file-like
字符串 -> 文件名
- mode: {‘r’, ‘w’, ‘a’},可选
read-write-append模式,默认为‘r’
- mmap: 无或布尔,可选
读取时是否映射文件名。当 filename 是文件名时默认为 True,当 filename 是 file-like 对象时默认为 False。注意,在使用 mmap 时,返回的数据数组直接引用磁盘上的 mmap 数据,只要引用存在,文件就不能关闭。
- version: {1, 2},可选
读取/写入的 netcdf 版本,其中 1 表示经典格式和 2 意味着64 位偏移格式.默认值为 1。请参阅这里了解更多信息。
- maskandscale: 布尔型,可选
是否根据属性自动缩放和/或屏蔽数据。默认为假。
参数 ::
注意:
该模块相对于其他模块的主要优势在于它不需要将代码链接到NetCDF 库。该模块派生自 pupynere 。
NetCDF 文件是一种自说明的二进制数据格式。该文件包含说明文件中的维度和变量的元数据。有关NetCDF 文件的更多详细信息,请参阅这里。 NetCDF 数据结构包含三个主要部分:
Dimensions
Variables
Attributes
维度部分记录了变量使用的每个维度的名称和长度。然后,变量将指示它使用的维度和任何属性,例如数据单位,以及包含变量的数据值。最好包含一个与维度同名的变量以提供该轴的值。最后,属性部分将包含附加信息,例如文件创建者的名称或用于收集数据的工具。
将数据写入NetCDF 文件时,通常需要指明“记录维度”。记录维度是变量的无界维度。例如,温度变量可能具有纬度、经度和时间的维度。如果想随着时间的推移将更多温度数据添加到NetCDF 文件中,那么温度变量应该将时间维度标记为记录维度。
此外,NetCDF 文件头包含数据在文件中的位置,因此可以高效地进行访问,而无需将不必要的数据加载到内存中。它使用
mmap
模块来创建映射到磁盘上数据的 Numpy 数组,目的相同。请注意,当使用
netcdf_file
打开 mmap=True(默认为只读)的文件时,其返回的数组直接引用磁盘上的数据。如果此类数组处于活动状态,则不应关闭该文件,并且在询问时也无法彻底关闭该文件。如果要在文件关闭后对其进行处理,您可能需要复制从映射的 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)
到time[:]
的分配。公开时间变量的切片允许在对象中设置数据,而不是让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 文件以只读方式打开时,返回直接引用磁盘上 memory-mapped 数据的数组:
>>> 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'
相关用法
- Python SciPy io.whosmat用法及代码示例
- Python SciPy io.savemat用法及代码示例
- Python SciPy io.loadmat用法及代码示例
- Python SciPy io.mminfo用法及代码示例
- Python SciPy io.mmread用法及代码示例
- Python SciPy io.hb_read用法及代码示例
- Python SciPy io.FortranFile用法及代码示例
- Python SciPy io.readsav用法及代码示例
- Python SciPy io.mmwrite用法及代码示例
- Python SciPy io.hb_write用法及代码示例
- Python SciPy interpolate.make_interp_spline用法及代码示例
- Python SciPy interpolate.krogh_interpolate用法及代码示例
- Python SciPy interpolative.reconstruct_matrix_from_id用法及代码示例
- Python SciPy interpolate.InterpolatedUnivariateSpline用法及代码示例
- Python SciPy interpolate.BSpline用法及代码示例
- Python SciPy integrate.quad_vec用法及代码示例
- Python SciPy interpolative.reconstruct_interp_matrix用法及代码示例
- Python SciPy interpolate.LSQSphereBivariateSpline用法及代码示例
- Python SciPy interpolate.griddata用法及代码示例
- Python SciPy integrate.cumulative_trapezoid用法及代码示例
- Python SciPy interpolate.splder用法及代码示例
- Python SciPy interpolate.LinearNDInterpolator用法及代码示例
- Python SciPy interpolate.PPoly用法及代码示例
- Python SciPy interpolate.NdBSpline用法及代码示例
- Python SciPy interpolate.pade用法及代码示例
注:本文由纯净天空筛选整理自scipy.org大神的英文原创作品 scipy.io.netcdf_file。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。