我有一个 xarray DataArray,如下所示,形状为 (1,5,73,144,17),我试图删除或删除“级别”坐标。所以,最终,我需要变量的形状 = (1,5,73,144)。
stdna
Out[717]:
<xarray.DataArray 'stack-6e9b86fc65e3f0fda2008a339e235bc7' (variable: 1, week: 5, lat: 73, lon: 144,
level: 17)>
dask.array<stack, shape=(1, 5, 73, 144, 17), dtype=float32, chunksize=(1, 1, 73, 144, 17),
chunktype=numpy.ndarray>
Coordinates:
* lon (lon) float32 0.0 2.5 5.0 7.5 10.0 ... 350.0 352.5 355.0 357.5
* lat (lat) float32 90.0 87.5 85.0 82.5 80.0 ... -82.5 -85.0 -87.5 -90.0
* level (level) float32 1000.0 925.0 850.0 700.0 ... 50.0 30.0 20.0 10.0
* week (week) int64 5 …
Run Code Online (Sandbox Code Playgroud) 我在 DF (df1) 中有数据,其开始和结束如下所示,我试图移动下面的“0”和“1”列,以便日期和时间后移一小时,以便日期和时间从小时 == 0 开始,而不是小时 == 1。
数据开始 (df1) -
0 1 2 3 4 5 6 7
0 20160101 100 7.977169 109404.0 20160101 100 4.028678 814.0
1 20160101 200 8.420204 128546.0 20160101 200 4.673662 2152.0
2 20160101 300 9.515370 165931.0 20160101 300 8.019863 8100.0
Run Code Online (Sandbox Code Playgroud)
数据结束 (df1) -
0 1 2 3 4 5 6 7
8780 20161231 2100 4.198906 11371.0 20161231 2100 0.995571 131.0
8781 20161231 2200 4.787433 19083.0 20161231 2200 1.029809 NaN
8782 20161231 2300 3.987506 …
Run Code Online (Sandbox Code Playgroud) 我有一个看起来像这样的情节
我无法理解如何手动更改或设置颜色条的数据值范围。我想根据图中显示的数据值尝试范围,并将颜色条更改为 (-4,4)。我看到plt.clim
,vmin
和vmax
是可能使用的函数。
这是我的代码:
import cdsapi
import xarray as xr
import matplotlib.pyplot as plt
import numpy as np
import cartopy.crs as ccrs
# Also requires cfgrib library.
c = cdsapi.Client()
url = c.retrieve(
'reanalysis-era5-single-levels-monthly-means',
{
'product_type': 'monthly_averaged_reanalysis',
'format': 'grib',
'variable': ['100m_u_component_of_wind','100m_v_component_of_wind'],
'year': ['2006','2007','2008','2009','2010','2011','2012','2013','2014','2015','2016','2017','2018','2019','2020','2021'],
'month': ['01','02','03','04','05','06','07','08','09','10','11','12'],
'time': '00:00',
'grid': [0.25, 0.25],
'area': [70.00, -180.00, -40.00, 180.00],
},
"C:\\Users\\U321103\\.spyder-py3\\ERA5_MAPPING\\100m_wind_U_V.grib")
path = "C:\\Users\\U321103\\.spyder-py3\\ERA5_MAPPING\\100m_wind_U_V.grib"
ds = xr.load_dataset(path, engine='cfgrib')
wind_abs = np.sqrt(ds.u100**2 + ds.v100**2)
monthly_means = wind_abs.mean(dim='time')
wind_abs_clim = …
Run Code Online (Sandbox Code Playgroud) 我有一个 8784 x 13 的 DF (df2),看起来像这样,其中有一个 yyyy-mm-dd 格式的“日期”列和一个以小时为单位的“时间”列,如下所示,我需要计算每日和每月的平均值2016 年:
DATE TIME BAFFIN BAY GATUN II GATUN I KLONDIKE IIIG \
8759 2016-01-01 0000 8.112838 3.949518 3.291540 7.629178
8760 2016-01-01 0100 7.977169 4.028678 3.097562 7.477159
KLONDIKE II LAGOA II LAGOA I PENASCAL II PENASCAL I SABINA \
8759 7.095450 NaN NaN 8.250527 8.911508 3.835205
8760 7.362562 NaN NaN 7.877099 7.858908 3.766714
SIERRA QUEMADA
8759 3.405049
8760 4.386598
Run Code Online (Sandbox Code Playgroud)
我尝试将“DATE”列转换为日期时间以使用 groupby,但我不确定如何执行此操作。我已尝试以下操作,但当我在 Excel 中测试计算时,它没有按日或月平均预期对数据进行分组:
davg_df2 = df2.groupby(by=df2['DATE'].dt.date).mean() #
davg_df2m = df2.groupby(by=df2['DATE'].dt.month).mean() #
Run Code Online (Sandbox Code Playgroud)
谢谢你,因为我仍在学习 …