[英]Assigning a new xarray dataset variable by using strings
我想在我的新 xarray 數據集中創建一個新變量,並使用一個字符串來給我的變量名。
這是一個例子:
x = xr.Dataset(
{
"temperature_c": (
("lat", "lon"),
20 * np.random.rand(4).reshape(2, 2),
),
"precipitation": (("lat", "lon"), np.random.rand(4).reshape(2, 2)),
},
coords={"lat": [10, 20], "lon": [150, 160]},
)
在這個例子中,當調用 assign function 時,我只能將我的新 xr 數據集變量“temperature_f”寫成一個非字符串,而是一個 python 變量名,然后我用這個名字獲得一個新的 xr 數據集變量:
In [6]: x.assign(temperature_f=x["temperature_c"] * 9 / 5 + 32)
Out[6]:
<xarray.Dataset>
Dimensions: (lat: 2, lon: 2)
Coordinates:
* lat (lat) int32 10 20
* lon (lon) int32 150 160
Data variables:
temperature_c (lat, lon) float64 16.22 15.63 4.918 1.948
precipitation (lat, lon) float64 0.7473 0.6274 0.5017 0.1341
temperature_f (lat, lon) float64 61.19 60.14 40.85 35.51
我希望能夠通過調用這樣的字符串來創建和分配一個新變量:
x.assign('temperature_f'=x["temperature_c"] * 9 / 5 + 32)
但是我得到一個錯誤。
我的目標是能夠創建和分配一個名稱在字符串列表中的新變量列表:
variables_names = ['temperature_f', 'temperature_h', 'temperature_i']
variables_lambdas = [3, 6, 1]
for i in range(len(variables_names)): x.assign(variables_names[i]=x["temperature_c"] * variables_lambdas[i] / 5 + 32)
非常感謝你幫助我::)
Xarray 數據集可以像字典一樣使用:
x = Dataset(...)
variables_names = ['temperature_f', 'temperature_h', 'temperature_i']
variables_lambdas = [3, 6, 1]
for vname, vlambda in zip(variables_names, variables_lambdas):
x[vname] = x["temperature_c"] * vlambda[i] / 5 + 32
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.