我有一個包含風的 u 和 v 分量的 netcdf 檔案。netcdf 檔案包含 7305 個每日值。對于每一天我想做一些計算,將輸出存盤在一個陣列中,然后合并所有陣列,這樣每個陣列將對應特定的一天。初始的 netcdf 檔案有 lats(101) 和 lons(129)。所以最終的陣列 (vort) 將有 (7305,101,129) 維。下面我已經包含了我迄今為止開發的代碼。如果我每天將其單獨存盤在 vort 中,它會起作用,但在“附加”時不起作用。有什么幫助嗎?
from matplotlib import pyplot
from matplotlib.cm import get_cmap
from __future__ import print_function
from netCDF4 import Dataset,num2date,date2num
from matplotlib.colors import from_levels_and_colors
from cartopy import crs
from cartopy.feature import NaturalEarthFeature, COLORS
from metpy.units import units
from datetime import datetime
from metpy.plots import StationPlot
#
import metpy.calc as mpcalc
import xarray as xr
import cartopy.crs as ccrs
import matplotlib
import numpy as np
import matplotlib.pyplot as plt
import datetime
import cartopy.feature as cfeature
import mygrads as mg
#
#
root_dir = '/users/pr007/mkaryp/'
nc = Dataset(root_dir 'ERA5_ensmean_daymean.nc')
#
lon=nc.variables['longitude'][:]
lat=nc.variables['latitude'][:]
#
dx, dy = mpcalc.lat_lon_grid_deltas(lon, lat)
#
u = []
v = []
vort = np.array([])
#
for i in range(7305):
v = np.array(nc.variables['v'][i,:,:])
u = np.array(nc.variables['u'][i,:,:])
#
v = units.Quantity(v, 'm/s')
u = units.Quantity(u, 'm/s')
#
# Compute dx and dy spacing for use in divergence calculation
vort1 = np.array(mpcalc.vorticity(u, v, dx=dx, dy=dy))
vort = np.append([vort, vort1])
#
print(i)
編輯 可以在此處找到所用資料檔案的子樣本。這個 netcdf 檔案有 10 個時間步,而不是 7305。
uj5u.com熱心網友回復:
如果我正確理解您的問題,您想要做的是:
lon=nc.variables['longitude'][:]
lat=nc.variables['latitude'][:]
#
dx, dy = mpcalc.lat_lon_grid_deltas(lon, lat)
#
u = []
v = []
vort = []
#
for i in range(10):
v.append(np.array(nc.variables['v'][i,:,:]))
u.append(np.array(nc.variables['u'][i,:,:]))
v[i] = units.Quantity(v[i], 'm/s')
u[i] = units.Quantity(u[i], 'm/s')
vort.append(np.array(mpcalc.vorticity(u[i], v[i], dx=dx, dy=dy)))
您當前的 for 回圈正在覆寫每個索引 i 的結果。所以你并沒有真正存盤所有天的資料。
您可以使用以下方法檢查我的結果:
print(len(vort))
print(vort[0])
長度為 10,這意味著它收集這 10 天的資料,而不是您的代碼中的 1 天。
請注意, myvort是 a list,而不是 a np.array,但串列中的每個元素都是 a np.array。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/340805.html
