Выполнение вычислений для каждого значения переменной файла netCDF - PullRequest
0 голосов
/ 04 августа 2020

В настоящее время я работаю примерно с 40 файлами NetCDF. Я пытался выполнить вычисление для каждого значения в конкретной переменной каждого файла, однако, когда я go для построения новой вычисляемой переменной, ни одно из значений не изменилось. Я открыл файл с помощью xarray, а затем выбрал переменную. Как мне сохранить новые расчетные значения. Я также пробовал несколько операторов возврата. Вот что у меня есть:

def вычисление_1 (файл):

    # Open Global attributes
    with xr.open_dataset(file) as s5p_variables:
        print(colored('Global attributes of product:\n', 'blue'), s5p_variables)

    raw_no2 = s5p_variables['tropospheric_NO2_column_number_density'][0]
    for x in range(raw_no2.shape[0]):
        for y in range(raw_no2.shape[1]):
            y_intercept = (2*(raw_no2[x][y]))/100  
            slope = -y_intercept/100  
            raw_no2[x][y] = slope*10 + y_intercept

пожалуйста, помогите

1 Ответ

0 голосов
/ 04 августа 2020

По фрагменту кода сложно сказать, что вы там делаете не так. Вы можете прочитать о , как создать минимальный воспроизводимый пример здесь . Я попытался воспроизвести вашу проблему с помощью примера ниже, который демонстрирует, что значения должны измениться. Вы также можете избежать цикла для каждого значения, поскольку xarray может broadcast ваши вычисления в каждой точке сетки, что намного быстрее, чем использование циклов for.

data = xr.DataArray(np.random.randn(2, 3), dims=("x", "y"), coords={"x": [10, 20]})
>>data
<xarray.DataArray (x: 2, y: 3)>
array([[ 0.27623202, -1.08740069, -0.67368971],
      [ 0.11364841, -1.47842655,  0.52498767]])
Coordinates:
* x        (x) int64 10 20
Dimensions without coordinates: y

y_intercept = (2*(raw_no2[x][y]))/100  
slope = -y_intercept/100  
raw_no2[x][y] = slope*10 + y_intercept
y_intercept = 2*data/100
slope = - y_intercept/100
data= slope*10 + y_intercept

>>data
<xarray.DataArray (x: 2y: 3)>
array([[-0.01121879,  0.02355238, -0.01290332],
       [ 0.01947954,  0.00112604, -0.02490705]])
Coordinates:
* x      (x) int64    10 20

 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...