python有enthought吗
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python有enthought吗相关的知识,希望对你有一定的参考价值。
你说的应该是这个Enthought Canopy
这是Python做科学计算的一个版本,里面包含有450 个 Python包(以后应该还会增加),还有交互式分析环境,包的管理和更新也很方便。
可以使用含有.edu的邮箱申请注册登录,免费用一些功能。
主界面
代码编写界面
Python包的管理升级界面
下载地址:https://www.enthought.com/canopy-subscriptions/(我下载了一晚上才好,有点慢)
参考技术A 这个不好找啊,毕竟现在很少有人花大把的时间去帮助他人。我是做科学计算的,基础教程多看多练习,然后我就转到与我工作相关的程序库NumPy, SciPy, Matlab, Enthought librarys有了基础,确定了学习目标,最终就是不停的学习程序库了!
[Enthought Traning] Scientific Computing in Python
[建议打开目录查看]
Enthought Traning
Scientific Computing
Data Interpolation
Normal Interpolation
# Data: x y
from scipy.interpolate import interp1d
# Basic
Interpolation = interp1d(x,y)
# With option bounds_error=False, interp1d won't raise an exception on extrapolation
Interpolation = interp1d(x,y,bounds_error = False)
# Fill nan with num when interpolate on extra Interval
Interpolation = interp1d(x,y,bounds_error = False,fill_value=-100)
# Kinds of Interpolation
Interpolation = interp1d(x,y,kind="linear")
# More Opitions : 'nearest','zero','quadratic','cubic',...
#Other Interpolation
from scipy.interpolate import interp2d, interpnd
Radial basis function
Radial basis functions are typically used to build up function approximations of the form
Approximation schemes of this kind have been particularly used in time series prediction and control of nonlinear systems exhibiting sufficiently simple chaotic behaviour, 3D reconstruction in computer graphics
Types
- Gaussian
ϕ(r)=e−(εr)2
- Multiquadric:
ϕ(r)=1+(εr)2‾‾‾‾‾‾‾‾‾√
- Inverse quadratic
ϕ(r)=11+(εr)2
- Inverse multiquadric:
ϕ(r)=11+(εr)2‾‾‾‾‾‾‾‾‾√
from scipy.interpolate.rbf import Rbf
Interpolation = Rbf(x, y, function = "multiquadric")
from numpy import (linspace, exp, sqrt, mgrid, pi, cos)
from mpl_toolkits.mplot3d import Axes3D
#3D data
x, y = mgrid[-pi/2:pi/2:5j, -pi/2:pi/2:5j]
z = cos(sqrt(x**2 + y**2))
#plot 3D scatter
fig = figure(figsize=(12,6))
ax = fig.gca(projection="3d")
ax.scatter(x,y,z)
#interpolate
zz = Rbf(x, y, z)
#plot 3D surface
xx, yy = mgrid[-pi/2:pi/2:50j, -pi/2:pi/2:50j]
fig = figure(figsize=(12,6))
ax = fig.gca(projection="3d")
ax.plot_surface(xx,yy,zz(xx,yy),rstride=1, cstride=1, cmap=cm.jet)
Statistics in Python
spicy.stats.stats
import scipy.stats.stats as st
Probability Distribution
Continuous Distribution Methods
pdf/cdf/rvs/ppf/stats/fit/sf/isf/entropy/…
Distrete Distribution Methods
pmf/cdf/rvs/ppf/stats/sf/isf/…
Continuous Distribution
from scipy.stats import norm
from scipy stats import t # t distribution
# generate random variables
x_norm = norm.rvs(size=500)
# fit a specific distribution
x_mean.x_std = norm.fit(x_norm)
# Draw distribution
x=linspace(-3,3,50)
h = plt.hist(x_norm,normed = Ture ,bins =20)
p = plt.plot(x,norm.pdf(x),'r-')
#calculate probability based on pdf in certain range and then draw the picture
from scipy.stats import norm
from scipy.integrate import trapz
import numpy as np
import matplotlib.pyplot as plt
x1 = np.linspace(-2,2,100)
p = trapz(norm.pdf(x1),x1)
print ':.2%'.format(p)
fb = plt.fill_between(x1,norm.pdf(x1),color = 'gray')
x=np.linspace(-3,3,50)
p = plt.plot(x,norm.pdf(x),'k-')
More about distribution
loc , scale
P = plt.plot(x,norm.pdf(x,loc = 0.5,scale = 2),label = 's=2')
legend()
Discrete Distribution
# Binom / Poisson / uniform distribution
from scipy.stats import binom,poisson,randint
# Binomial Distribution
num_trials = 50
x = arange(num_trials)
p = plot(x, binom(num_trials, 0.5).pmf(x), "o-", label="p=0.5")
p = plot(x, binom(num_trials, 0.2).pmf(x), "o-", label="p=0.2")
l = legend(loc="upper right")
t = title("Binomial distribution with 50 trials")
x = arange(0,21)
p = plot(x, poisson(1).pmf(x), 'o-', label=r"$\\lambda$=1")
p = plot(x, poisson(4).pmf(x), 'o-', label=r"$\\lambda$=4")
p = plot(x, poisson(9).pmf(x), 'o-', label=r"$\\lambda$=9")
l = legend()
t = title("Poisson 'number of occurrences' distribution")
Our Own Discrete Distribution
Can be used in sampling
from scipy.stats import rv_discrete
# Dice Example
xk = [1, 2, 3, 4, 5, 6]
pk = [0.3, 0.35, 0.25, 0.05, 0.025, 0.025]
loaded = rv_discrete(values=(xk, pk))
samples = loaded.rvs(size=100)
Hypothesis Testing
from scipy.stats import norm
from scipy.stats import ttest_ind, ttest_rel, ttest_1samp
#[ttest_ind]Calculates the T-test for the means of TWO INDEPENDENT samples of scores
#[ttest_rel]Calculates the T-test on TWO RELATED samples of scores, before and after
#[ttest_1samp]Calculates the T-test for the mean of ONE group of scores
from scipy.stats import t
n1 = norm(loc=0.5, scale=1.0)
n2 = norm(loc=0, scale=1.0)
n1_samples = n1.rvs(size=100)
n2_samples = n2.rvs(size=100)
# T test
t_val, p_val = ttest_ind(n1_samples, n2_samples)
#t_val = 1.05831471112
#p_val = 0.291201401071
Curve Fitting
Random Generate
np.random.__
Linear polynomial fitting
from numpy import polyfit, poly1d
x = np.linspace(-5, 5, 100)
y = 4 * x + 1.5
noisy_y = y + np.random.randn(y.shape[-1]) * 2.5
coefficients = polyfit(x, noisy_y, 1)
f = poly1d(coefficients) # Generate The Polynomial Function
#y = poly1d([1,2,3])
#print y
#x^2+2x+3
Least-Squares Fitting
from scipy.linalg import lstsq
from scipy.stats import linregress
from scipy.optimize import leastsq
Transform x
X = np.hstack((x[:,newaxis], np.ones((x.shape[-1],1))))
x = np.linspace(0, 5, 100)
y = 0.5 * x + np.random.randn(x.shape[-1]) * 0.35
X = np.hstack((x[:,newaxis], np.ones((x.shape[-1],1))))
C, resid, rank, s = linalg.lstsq(X, y)
print 'coefficients = '.format(C)
print "sum squared residual = :.3f".format(resid[0])
print "rank of the X matrix = ".format(rank)
print "singular values of X = ".format(s)
slope, intercept, r_value, p_value, stderr = linregress(x, y)
Curve fitting with callables
def fun(x,a,b,c):
return a*x*x+b*x+c
y= fun(10,*[2,3,4])
General Way For Curve Fitting
from scipy.optimize import curve_fit
def function(x,a,b,c):
return a*x*x+b*x+c
p_est, err_est = curve_fit(function, x, y)
Minimization
In general, the optimization problems are of the form:
minimize f(x) subject to
g_i(x) >= 0, i = 1,...,m
h_j(x) = 0, j = 1,...,p
where x is a vector of one or more variables.
``g_i(x)`` are the inequality constraints.
``h_j(x)`` are the equality constrains.
minimize(fun, x0, args=(), method=None, jac=None, hess=None, hessp=None, bounds=None, constraints=(), tol=None, callback=None, options=None)
from scipy.optimize import minimize
def rosenbrock(x,y):
return (1-x)*(1-x)+100*(y-x*x)*(y-x*x)
x = [3,2]
xi=[x0]
result = minimize(rosen, x0, callback=xi.append)
X_min = result.x
result.fun
#or use
Fun_minimize = rosenbrock(*result.x)
Symbolic Integration
from sympy import symbols, integrate
import sympy
x, y = symbols('x y')
z = sympy.sqrt(x ** 2 + y **2)
z.subs(x, 3)
z.subs(x, 3).subs(y, 4)
from sympy.abc import theta
y = sympy.sin(theta) ** 2
Y = integrate(y)
#theta/2 - sin(theta)*cos(theta)/2
integrate(y, (theta, 0, sympy.pi))
integrate(y, (theta, 0, sympy.pi)).evalf()
Learn More
import sympy
x ,z= symbols('x z')
y = x*x + sin(x) +3*z
print sympy.diff(y,x)
print sympy.diff(y,z)
m = sympy.diff(y,x)
m.subs(x,2).evalf()
Numerical Integration
Normal integration
from matplotlib.pyplot import plot, annotate, fill_between, figure
import numpy as np
def f(x):
return x*x
from scipy.integrate import quad
interval = [0, 1]
value, max_err = quad(f, *interval)
x=np.linspace(0,2,20)
plot(x,f(x),'-')
x_interval = np.linspace(0,1,10)
fill_between(x_interval,f(x_interval),color='r',alpha=0.3)
annotate(r"$\\int_0^1x^2dx = $" + ":.3".format(value), (0.5, 2),
fontsize=16)
Double integration
Example:
from scipy.integrate import dblquad
@vectorize
def I(n):
x_lower = 0
x_upper = inf
return dblquad(h, x_lower, x_upper,lambda t_lower: 1, lambda t_upper: inf, args=(n,))
I([0.5, 1.0, 2.0, 5])
Integration of sampled data
from scipy.integrate import trapz, simps
Trapezoidal Integration
x = linspace(0, pi, 100)
y = sin(x)
result = simps(y, x)
Trapezoidal Integration
x = linspace(0, pi, 100)
y = sin(x)
result = trapz(y, x)
以上是关于python有enthought吗的主要内容,如果未能解决你的问题,请参考以下文章
[Enthought Traning] Scientific Computing in Python
[Enthought Traning] Scientific Computing in Python
使用 pyodbc 模块的连接字符串不适用于 Enthought Python Distribution
如何在 Mac 上将 openCV 安装到 Enthought python 发行版中
LeetCode22. Generate Parentheses (I thought I know Python...)
Python科学计算windows下开发环境搭建(当用pip安装出现Unable to find vcvarsall.bat)