Я новичок в python и имею некоторый опыт работы с matlab. Я не получаю правильные значения для исходящего длинноволнового излучения из файла netCDF, и я попробовал модуль scipy.io.netcdf и модуль Scientific.IO.NetCDF.Проблемы с извлечением переменных из файла NetCDF в python
import Scientific.IO.NetCDF as S
fileobj = S.NetCDFFile('filename.nc', mode='r')
data = fileobj.variables['var'].getValue() # I tried both with and w/o the .getValue()
print data[0:10,43,80] #first ten points in time at a specific lat/lon
[ -5124 -5335 -5121 -5499 -5508 -8930 -10111 -9435 -8534 -8487]
Мой код с использованием scipy.io.netcdf было то же самое, за исключением я не использовал .getValue(). Затем я пробовал это упражнение в matlab
data = ncread('filename.nc','var');
data[80,43,1:10] %note matlab orders the data lon, lat, time
ans(:,:,1) =
275.0400
ans(:,:,2) =
279.0800
ans(:,:,3) =
279.6800
ans(:,:,4) =
277.8700
ans(:,:,5) =
275.5900
ans(:,:,6) =
241.4700
ans(:,:,7) =
223.1900
ans(:,:,8) =
235.5700
ans(:,:,9) =
239.8200
ans(:,:,10) =
249.5400
Я знаю, что значения, полученные из Matlab, верны. Эта переменная должна быть в диапазоне 80-330 (Вт на квадратный метр). Любые идеи о том, что происходит с питоном? благодаря
это не должно быть 'печать данных [0: 10,42,79]' вместо этого? Индексы Python от 0, Matlab от 1. –
А, да. Ты прав. Однако значения все еще находятся в диапазоне -10 000, в то время как они должны находиться в диапазоне 80-330. Сегодня я немного поработал и обнаружил, что если я использую Netcdf-пакет MATLAB 'low level', просто называемый netcdf.getVar, тогда я получаю тот же ответ, что и python. – asl