Основная проблема во время этого процесса - код ниже:
precip[:] = orig
Выдает ошибку:
ValueError: cannot reshape array of size 5732784 into shape (39811,144,144)
У меня есть два файла CSV, один из файлов CSV содержит всеФактические данные переменной (осадки), где каждый столбец является станцией, и соответствующие им координаты находятся во втором отдельном файле CSV.Мои примеры данных находятся на Google Drive здесь .
Если вы хотите посмотреть на сами данные, но мой 1-й CSV-файл имеет форму (39811, 144) и 2-й CSV-файлимеет форму (171, 10), но примечание;Я использую только нарезанный кадр данных как (144, 2).
Это код:
stations = pd.read_csv(stn_precip)
stncoords = stations.iloc[:,[0,1]][:144]
orig = pd.read_csv(orig_precip, skiprows = 1, names = stations['Code'][:144])
lons = stncoords['X']
lats = stncoords['Y']
ncout = netCDF4.Dataset('Precip_1910-2018_homomod.nc', 'w')
ncout.createDimension('longitude',lons.shape[0])
ncout.createDimension('latitude',lats.shape[0])
ncout.createDimension('precip',orig.shape[1])
ncout.createDimension('time',orig.shape[0])
lons_out = lons.tolist()
lats_out = lats.tolist()
time_out = orig.index.tolist()
lats = ncout.createVariable('latitude',np.dtype('float32').char,('latitude',))
lons = ncout.createVariable('longitude',np.dtype('float32').char,('longitude',))
time = ncout.createVariable('time',np.dtype('float32').char,('time',))
precip = ncout.createVariable('precip',np.dtype('float32').char,('time', 'longitude','latitude'))
lats[:] = lats_out
lons[:] = lons_out
time[:] = time_out
precip[:] = orig
ncout.close()
Я в основном основываю свой код на этом посте: convert-csv-to-netcdf , но не включает переменную «ВРЕМЯ» в качестве 3-го измерения, поэтому я терплю неудачу.Я думаю, что мне следует ожидать, что переменная осадков будет иметь форму в форме (39811, 144, 144), но ошибка говорит об обратном.
Не совсем уверен, как с этим справиться, любые входные данные приветствуются.