Skip to content

Instantly share code, notes, and snippets.

@AdrianoPereira
Last active December 6, 2020 23:07
Show Gist options
  • Save AdrianoPereira/0cf5dbc5bb2a2a415a5d5c019122e637 to your computer and use it in GitHub Desktop.
Save AdrianoPereira/0cf5dbc5bb2a2a415a5d5c019122e637 to your computer and use it in GitHub Desktop.
import numpy as np
import netCDF4 as nc
FILENAME = "./ex001.nc" # File name
DIM1 = 1 # Scalar dimension
DIM2 = 100 # 1-D Array dimension
DIM3 = 20 # Rows matrix
DIM4 = 100 # Columns matrix
def write_file():
# Open instance file
nc_file = nc.Dataset(FILENAME, 'w', format="NETCDF4")
# Define dimensions data
scalar_dim = nc_file.createDimension('scalarDim', DIM1)
array_dim = nc_file.createDimension('arrayDim', DIM2)
rows_matrix_dim = nc_file.createDimension('rowsMatrixDim', DIM3)
cols_matrix_dim = nc_file.createDimension('colsMatrixDim', DIM4)
# Define variables data
scalar_var = nc_file.createVariable(
'scalarVar', 'float32', ('scalarDim')
)
array_var = nc_file.createVariable(
'arrayVar', 'float32', ('arrayDim')
)
rows_mat_var = nc_file.createVariable(
'rowsMatVar', 'float32', ('rowsMatrixDim')
)
cols_mat_var = nc_file.createVariable(
'colsMatVar', 'float32', ('colsMatrixDim')
)
value_mat = nc_file.createVariable(
'rowsColsVar', 'float32', ('arrayDim', 'rowsMatrixDim', 'colsMatrixDim')
)
# Assign values
scalar_var[:] = 42 # Scalar values data
array_var[:] = np.arange(0, DIM2, 1)+1 # 100 values from 1 to 100
rows_mat_var[:] = np.arange(0, DIM3, 1)+1 # 20 values from 0 to 20
cols_mat_var = np.arange(0, DIM4)+1 # 100 values from 0 to 100
for i in range(DIM2):
# For each i-th index of array, assign a random matrix (from 0 to 10) of 20x100 dimensions
value_mat[i, :, :] = np.random.uniform(0, 10, size=(DIM3, DIM4))
def read_file():
# Open instance file
nc_file = nc.Dataset(FILENAME, 'r', format="NETCDF4")
print('Variables...')
for key in nc_file.variables.keys():
data_key = nc_file.variables[key]
print("Variable %s: " % key)
print("Shape: ", data_key[:].shape)
print("Value: ", data_key[:])
# Close instace file
nc_file.close()
if __name__ == "__main__":
print("Call function to create file...")
write_file()
print("File created")
print("Reading file...")
read_file()
print("Closing file...")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment