dataset数据的创建
用一个简单的二次线性插值的例子来演示这种格式的创建(真的好麻烦)
def double_linear(filename, tp): # print(tp) date = tp.variables['date'] longitude = tp.coords['longitude'] latitude = tp.coords['latitude'] longitude1 = longitude + 0.25 latitude1 = latitude + 0.25 for i in range(len(latitude) - 1): latitude1[i] = (latitude[i] + latitude[i + 1]) / 2 data1 = np.zeros((len(tp.coords["date"]), len(tp.coords["latitude"]), len(tp.coords["longitude"]))) for i in range(len(tp.coords["date"])): print("date=", tp.coords["date"][i]) for j in range(len(tp.coords["latitude"]) - 1): for k in range(len(tp.coords["longitude"]) - 1): data1[i][j][k] = (tp[filename][i][j][k] + tp[filename][i][j + 1][k] + tp[filename][i][j][k + 1] + tp[filename][i][j + 1][k + 1]) * 0.25 tp1 = xr.Dataset({filename: (["date", "latitude", "longitude"], data1)}, coords={"date": date, "latitude": latitude1, "longitude": longitude}) lon_min = 85.0 lon_max = 105.0 lat_min = 20.0 lat_max = 40.0 tp1 = tp1.sel(latitude=slice(lat_max, lat_min), longitude=slice(lon_min, lon_max)) return tp1
发现上面访问变量的方法太睿智了,简直就是龟速不知道为什么python这么神(niu)奇(ma)
可以把访问变量先用variable提取出来, 可以快不少
dataset = tp.variables[filename][:] for i in range(len(tp.coords["date"])): print("date=", tp.coords["date"][i]) for j in range(len(tp.coords["latitude"]) - 1): for k in range(len(tp.coords["longitude"]) - 1): data1[i][j][k] = (dataset[i][j][k] + dataset[i][j + 1][k] + dataset[i][j][k + 1] + dataset[i][j + 1][k + 1]) * 0.25
河田は河田、赤木は赤木……。
私は誰ですか。教えてください、私は誰ですか。
そうだ、俺はあきらめない男、三井寿だ!