import re
stringWithNumbers='anystring2with 6.89 numbers3.55 3.141312'
digits = re.findall("[-+]?\d+\.?\d*", stringWithNumbers)
Python programming, with examples in hydraulic engineering and in hydrology.
Tuesday, July 24, 2018
Tuesday, July 10, 2018
Fitting IDF curves with Scipy and Pandas
# -*- coding: utf-8 -*- """ Created on Tue Jul 10 11:19:37 2018 @author: rodrigo.goncalves """ import pandas as pd from scipy.optimize import minimize # This is the IDF function, returning the sum of squared errors (SSE) def func2(par, res): p1 = (par[0] * res.index.values **par[1]) p2 = ((res.columns.values.astype(float)+par[2])**par[3]) f = pd.DataFrame([p/p2 for p in p1],index=res.index,columns=res.columns) erroTotQ=((f-res)**2).sum(axis=1).sum() return erroTotQ # copy your rainfall intensities table from excel # with column headers with rainfall durations # and row names with Return period value in years dfInt=pd.read_clipboard() #initial guess param1 = [5000, 0.1, 10, 0.9] res2 = minimize(func2, param1, args=(dfInt,), method='Nelder-Mead') print(res2) cs=['K=','a=','b=','c='] dfResult=pd.DataFrame(res2.x,index=cs).transpose() print(dfResult) dfResult.to_clipboard(index=None)
Labels:
fitting idf curves,
idf,
minimize,
pandas,
precipitation,
rain,
rainfall,
scipy
Subscribe to:
Posts (Atom)