python-xarray重命名数据变量

时间:2017-05-12 18:04:52

标签: python-xarray

我已创建from __future__ import unicode_literals from django.db import models from django.contrib.auth.models import User class ArtistUser(models.Model): id_artista = models.AutoField(primary_key=True) user = models.OneToOneField(User, on_delete=models.CASCADE) is_artist = models.BooleanField(default=True) name = models.TextField(max_length=50) class NormalUser(models.Model): id_user = models.AutoField(primary_key=True) user = models.OneToOneField(User, on_delete=models.CASCADE) is_artist = models.BooleanField(default=False) name = models.TextField(max_length=50) class Album(models.Model): id_album = models.AutoField(primary_key=True) name_album = models.TextField(max_length=50) artista = models.ForeignKey(ArtistUser) class Song(models.Model): id_song = models.AutoField(primary_key=True) name_song = models.TextField(max_length=50) artist = models.ForeignKey(ArtistUser) album = models.ForeignKey(Album) class Playlist(models.Model): id_playlist = models.AutoField(primary_key=True) name_playlist = models.TextField(max_length=50) user = models.ForeignKey(User) songs = models.ManyToManyField(Song) 并使用xarray.DataArray保存。

我使用以下方式创建它:

xarray.DataArray.to_netcdf

即。我没有指定名称,例如:

datatmp = np.full([nens, len(modanom.coords['time'].values), len(modanom.coords['latitude'].values), len(modanom.coords['longitude'].values)], np.nan)
b = xr.DataArray(datatmp, coords=[range(1,nens + 1), modanom.coords['time'], modanom.coords['latitude'], modanom.coords['longitude']], dims=['ensemble', 'time', 'latitude', 'longitude'])

我对此文件进行一些操作并获得均方根误差,结果b = xr.DataArray({'windspeed': (('ensemble', 'time', 'latitude', 'longitude'), datatmp)}, coords=[range(1,nens + 1), modanom.coords['time'], modanom.coords['latitude'], modanom.coords['longitude']], dims=['ensemble', 'time', 'latitude', 'longitude'])

xarray.Dataset

在netCDF文件中读取时,我有一个<xarray.DataArray (latitude: 81, longitude: 131, time: 1)> array([[[ nan], [ nan], ..., [ nan], [ nan]], [[ nan], [ nan], ..., [ nan], [ nan]], ..., [[ nan], [ 0.843295], ..., [ 0.794338], [ nan]], [[ nan], [ nan], ..., [ nan], [ nan]]]) Coordinates: * latitude (latitude) float64 0.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 ... * longitude (longitude) float64 260.0 261.0 262.0 263.0 264.0 265.0 266.0 .. * time (time) datetime64[ns] 1983-01-15T12:00:00

看起来像:

xarray.Dataset

我可以重命名<xarray.Dataset> Dimensions: (latitude: 81, longitude: 131, time: 1) Coordinates: * latitude (latitude) float64 0.0 1.0 2.0 3.0 4.0 ... * longitude (longitude) float64 260.0 261.0 262.0 ... * time (time) datetime64[ns] 1983-01-15T12:00:00 Data variables: __xarray_dataarray_variable__ (latitude, longitude, time) float64 nan ... Attributes: _NCProperties: version=1|netcdflibversion=4.4.1|hdf5libversion=1.8.18 吗?

我问的原因是因为我有创建__xarray_dataarray_variable__的功能,因此我没有指定数据变量名称。但是,我想在绘图之前重命名它。

3 个答案:

答案 0 :(得分:1)

此文件类似于DataArray.to_netcdf()在未命名的DataArray上创建的文件。解决此问题的一种简单方法是在调用to_netcdf()之前在DataArray 上设置名称。

否则,如果您很高兴收到未命名的DataArray,请尝试使用xarray.open_dataarray()加载。

答案 1 :(得分:0)

DataArray.rename

是我正在寻找的

答案 2 :(得分:0)

数据集ds的另一种可能性是:

    ds['new_var_name'] = ds['__xarray_dataarray_variable__']
    ds = ds.drop(['__xarray_dataarray_variable__'])