I am very very new to the world of data science as I only started using it in my new job so I would really appreciate help from the community experts (maybe also in simple words :)).

I am trying to build a dataset comprising data extracted from a NetCDF data file. The data extract would contain n number of images each of 25x25 size in 17 channels. The idea is to save them as a new data file or object (it could be NetCDF but there is no restriction as long as it is readable by xarray). I am unable to find a way to achieve this because, in xarray, you have N-dimensional data, and to each point in this N-dimensional data there is a label attached. So how do I save 25x25 images with 17 variables (channels) in one dimension (axis of length n, the number of images) so that when I pass the index of the axis (nth image), it returns as dataArray of 17x25x25.

Thanks in advance.

  • $\begingroup$ So you want an array of size n that contains subarrays each of size 17x25x25 such that array[x] outputs image[x]? $\endgroup$
    – Iya Lee
    Commented Mar 18, 2023 at 11:17
  • $\begingroup$ Hi! Yup. And I would like to have this stored in a NetCDF file (or perhaps another file format would work as well but at the moment I only know how to work with NetCDF). So if you read it, the index 1 should give an image of 17x25x25. $\endgroup$
    – Shaz
    Commented Mar 18, 2023 at 13:26

1 Answer 1

import numpy as np
!pip install netCDF4
!pip install xarray
import netCDF4 as nc
import xarray as xr

image0 = np.array([[[np.zeros(25)+1] for i in range(25)] for i in range(17)]).squeeze()
image1 = np.array([[[np.zeros(25)+2] for i in range(25)] for i in range(17)]).squeeze()
image2 = np.array([[[np.zeros(25)+3] for i in range(25)] for i in range(17)]).squeeze()

# creating some arrays with the same size as the images you asked for

array = np.array([image0, image1, image2])

# numpy array 

df = xr.DataArray(array)

# netCDF4 xarray

# df[0] = image[0], df[1] = image[1], df[2] = image[2]

Let me know if you meant other.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.