Я хочу написать функцию на Python, которая читает мои данные. Вне этой функции работает примерно так
model = open_ncfile('/data/BAF_2001-2013_model.nc')
lat_model = model.variables['lat'][:]
lon_model = model.variables['lon'][:]
data = model.variables['var'][0,:,:]
Как я могу поместить это в функцию?
def plot(model, lat, lon, var):
model = open_ncfile('/data/BAF_2001-2013_model.nc')
lat_model = model.variables['lat'][:]
lon_model = model.variables['lon'][:]
model = model.variables['var'][0,:,:]
Я предполагаю, что основной вопрос здесь заключается в том, как я объединяю строки внутри функции в python, поэтому, если я назову
plot(model1, lat1, lon1, var1)
моя функция даст
model1 = open_ncfile('/data/BAF_2001-2013_model1.nc')
lat_model1 = model1.variables['lat1'][:]
lon_model1 = model1.variables['lon1'][:]
model1 = model1.variables['var1'][0,:,:]
Таким образом, я могу вызывать функцию с разными моделями, которые имеют разные имена для имен переменных. Нигде не нашел! Спасибо :)
Я думаю, вам следует погуглить определение слова "объединение"
Я думаю, вы неправильно понимаете, как аргументы работают в Python. Насколько я могу судить, у вас есть функция plot(model, lat, long, var). Если вы вызываете его с аргументами model1 и т. д. (Например, plot(model1, lat1, lon1, var1)), то функция будет работать с этими объектами. Если вас не интересует имя файла?
Если я вызываю plot (model1, lat1, lon1, var1), python интерпретирует его как / scratch / local1 / m300481 / Data / Observation / SF1 / BAF_2001-2013_m odel.nc ', но я хочу / scratch / local1 / m300481 / Данные / Наблюдение / SF1 / BAF_2001-2013_m odel1.nc '






Ваш вопрос очень неясен, но я полагаю, вы в основном хотите динамически извлекать модель и извлекать ее данные, поэтому это должно помочь:
def plot(model_name, lat_name, lon_name, var_name):
model = open_ncfile('/data/BAF_2001-2013_{}.nc'.format(model_name))
lat = model.variables[lat_name][:]
lon = model.variables[lon_name][:]
var = model.variables[var_name][0,:,:]
return (model, lat, lon, var)
И тогда вы сможете:
model, lat, lon, data = plot('model', 'lat', 'lon', 'var')
model1, lat1, lon1, data1 = plot('model1', 'lat1', 'lon1', 'var1')
model42, lat42, lon42, data42 = plot('model42', 'lat42', 'lon42', 'var42')
Я думаю, что в этот ответ было бы неплохо включить вариант выполнения конкатенации строк: model = open_ncfile ('/ data / BAF_2001-2013_' + model_name + '.nc')
Спасибо, да, у меня возникли проблемы, чтобы изложить свою точку зрения, но это отлично работает!
return model.variables['var'][0,:,:]?