numpy网格内存错误对未网格化的netCDF

2024-10-01 02:22:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个不同的netCDF文件:一个“grided”,一个“ungrided”(见下面的示例)。在

我试着用这两种方法做一个网格网格,如下所示:

dataset = Dataset(file_name)
data = dataset.variables['air_temp'][:]
lats = dataset.variables['lat'][:]
lons = dataset.variables['lon'][:]
print lats.shape
print lons.shape
lons, lats = np.meshgrid(lons,lats)
print lons.shape
print lats.shape

网格:lats:一维数组(720,)和lons:一维数组(1440,) 并在meshgrid之后返回一个二维数组(7201440)。在

^{pr2}$

ungrided:lats:2-D数组(1080,2048)和lons(1080,2048)我希望在meshgrid之后有一个2-D数组(10802048),但它返回的是MemoryError

lats: 
[[-34.18847656 -34.20410156 -34.21972656 ..., -40.50195312 -40.50488281
  -40.5078125 ]
 [-34.19726562 -34.21289062 -34.22851562 ..., -40.51171875 -40.51367188
  -40.51660156]
 [-34.20605469 -34.22167969 -34.23828125 ..., -40.52246094 -40.52441406
  -40.52734375]
 ..., 
 [-43.77441406 -43.79394531 -43.81347656 ..., -50.73339844 -50.73339844
  -50.734375  ]
 [-43.78320312 -43.80175781 -43.82226562 ..., -50.7421875  -50.74316406
  -50.74316406]
 [-43.79199219 -43.81054688 -43.83105469 ..., -50.75195312 -50.75195312
  -50.75292969]]

lons:
[[  4.93164062   4.9765625    5.02148438 ...,  36.7734375   36.82421875
   36.875     ]
 [  4.92675781   4.97167969   5.015625   ...,  36.77246094  36.82324219
   36.87402344]
 [  4.921875     4.96679688   5.01171875 ...,  36.77148438  36.82226562
   36.87304688]
 ..., 
 [ -1.18457031  -1.13574219  -1.08691406 ...,  36.3359375   36.3984375
   36.45996094]
 [ -1.19238281  -1.14257812  -1.09375    ...,  36.3359375   36.3984375
   36.45996094]
 [ -1.19921875  -1.14941406  -1.09960938 ...,  36.3359375   36.3984375
   36.45996094]]

np.meshgrid在网格化的系统上运行得很好:几毫秒内几乎没有使用RAM,另一方面网格化的一个完全崩溃了我的Mac。我必须通过活动监视器杀死python进程。我以为是因为我的电脑只有4GB的内存,但我和一个运行在16GB的Windows上的朋友试了一下,结果发现同样的问题。在

我只看到一篇文章谈到使用更小的数据块,但是这个netCDF文件只有2Mb!它如何生成16Gb的RAM?在

“无网格”的lats和{}阵列的形状是由于数据来自卫星测量,因此像素不是完美的“正方形”。在


Tags: 文件网格npnetcdf数组variablesdatasetram