def plot_pdf_fit(self, label=None):
import matplotlib.pyplot as plt
from scipy.stats import exponweib, rayleigh
from scipy import linspace, diff
plt.bar(self.pdf[1][:len(self.pdf[0])], self.pdf[0], width=diff(self.pdf[1]), label=label, alpha=0.5, color='k')
x = linspace(0, 50, 1000)
plt.plot(x, exponweib.pdf(x, a=self.weibull_params[0], c=self.weibull_params[1], scale=self.weibull_params[3]),
'b--', label='Exponential Weibull pdf')
plt.plot(x, rayleigh.pdf(x, scale=self.rayleigh_params[1]), 'r--', label='Rayleigh pdf')
plt.title('Normalized distribution of wind speeds')
plt.grid()
plt.legend()
python类diff()的实例源码
def get_edges(routes):
results = []
for timetable in walk_timetables(routes):
origin = timetable['timetable']['departureStopId']
for route in timetable['timetable']['routes']:
for intervals in route['stationIntervals']:
stops = [origin] + [x['stopId'] for x in intervals['intervals']]
edges = [[s, t] for s, t in zip(stops, stops[1:])]
times = [0] + [x['timeToArrival'] for x in intervals['intervals']]
weights = list(sp.diff(sp.array(times)))
results.extend([[s, t, w] for (s, t), w in zip(edges, weights)])
results = pd.DataFrame(results, columns=['origin', 'destination', 'time'])
results = results.groupby(['origin', 'destination']).mean()
return results
def plot_pdf_fit(self, label=None):
import matplotlib.pyplot as plt
from scipy.stats import exponweib, rayleigh
from scipy import linspace, diff
plt.bar(self.pdf[1][:len(self.pdf[0])], self.pdf[0], width=diff(self.pdf[1]), label=label, alpha=0.5, color='k')
x = linspace(0, 50, 1000)
plt.plot(x, exponweib.pdf(x, a=self.weibull_params[0], c=self.weibull_params[1], scale=self.weibull_params[3]), 'b--', label='Exponential Weibull pdf')
plt.plot(x, rayleigh.pdf(x, scale=self.rayleigh_params[1]), 'r--', label='Rayleigh pdf')
plt.title('Normalized distribution of wind speeds')
plt.grid()
plt.legend()
def getWeights(X1D):
d = len(X1D)
''' puts the X values in their respective dimensions to use bsxfun for
evaluation'''
Xreshape = []
Xreshape.append(X1D[0].reshape(-1,1))
if d >= 2:
Xreshape.append(X1D[1].reshape([1,-1]))
for idx in range (2,d):
dims = [1]*idx
dims.append(-1)
Xreshape.append(reshape(X1D[idx], dims))
# to find and handle singleton dimensions
sizes = [X1D[ix].size for ix in range(0,d)]
Xlength = array(sizes)
''' calculate weights '''
#1) calculate mass/volume for each cuboid
weight = 1
for idx in range(0,d):
if Xlength[idx] > 1:
if idx > 1:
weight = multiply(weight[...,newaxis],diff(Xreshape[idx], axis=idx))
else:
weight = multiply(weight,diff(Xreshape[idx], axis=idx))
else:
weight = weight[...,newaxis]
#2) sum to get weight for each point
if d > 1:
dims = tile(2,[1,d])
dims[0,where(Xlength == 1)] = 1
d = sum(Xlength > 1)
weight = (2.**(-d))*convn(weight, ones(dims.ravel()), mode='full')
else:
weight = (2.**(-1))*convolve(weight, array([[1],[1]]))
return weight