Home > Back-end >  adding extra dimensions in a numpy array or a dataframe
adding extra dimensions in a numpy array or a dataframe

Time:07-17

I have a pandas series named obs(62824,) that has values of temperatures as follows

0        16.9
1        11.0
2         5.9
3         9.4
4        15.4
        ... 

I want to use the following code to basically transform my numpy array to a xr.DataArray

lat = 35.93679
lon = 14.45663
obs_data = xr.DataArray(obs_tas, dims=['time','lat','lon'], \
                       coords=[pd.date_range('1979-01-01', '2021-12-31', freq='D'), lat, lon])

My issue is that I get the following error

ValueError: dimensions ('lat',) must have the same length as the number of data dimensions, ndim=0

from my understanding is because the numpy array has only 1 dimension. I tried the following

obs = obs[..., np.newaxis, np.newaxis]

However that did not work as well and I still get the same error. How can I fix that?

CodePudding user response:

You are correct about adding dimensions to obs.

In Creating a DataArray and API reference it is mentioned that the coordinates themselves should be array-like.

Your lat and lon are floats. I believe all you have to do is wrap them in a list, like so:

lat = [35.93679]  # <- list
lon = [14.45663]  # <- list
obs_data = xr.DataArray(
    obs[:, None, None], 
    dims=['time', 'lat', 'lon'], 
    coords=[
        pd.date_range('1979-01-01', '2021-12-31', freq='D'), lat, lon
    ]
)
  • Related