我需要能够在 python 中快速读取大量 netCDF 变量(每个文件 1 个变量)。我发现 netCDF4 库中的数据集函数与其他语言(例如 IDL)中的读取实用程序相比相当慢。
我的变量的形状为 (2600,5200),类型为 float。它们对我来说似乎并不大(文件大小 = 52Mb)。
这是我的代码:
import numpy as np
from netCDF4 import Dataset
import time
file = '20151120-235839.netcdf'
t0=time.time()
openFile = Dataset(file,'r')
raw_data = openFile.variables['MergedReflectivityQCComposite']
data = np.copy(raw_data)
openFile.close()
print time.time-t0
读取一个变量(一个文件)大约需要3秒。我认为主要的减速是 np.copy。 raw_data
是<type 'netCDF4.Variable'>
,因此是副本。这是在 python 中执行 netCDF 读取的最佳/最快方法吗?
谢谢。
最佳答案
Numpy 的强大之处在于,您可以通过它保留的有关数据的元数据创建对内存中现有数据的 View 。因此,通过指针,副本总是比 View 慢。正如 JCOidl 所说,不清楚为什么你不只是使用:
raw_data = openFile.variables['MergedReflectivityQCComposite'][:]
有关详细信息,请参阅 SciPy Cookbook所以 View onto a numpy array?
关于python - python中高效读取netcdf变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34159747/