簡體   English   中英

使用字符串分配新的 xarray 數據集變量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM