Last active
December 6, 2020 23:07
-
-
Save AdrianoPereira/0cf5dbc5bb2a2a415a5d5c019122e637 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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