python核心编程代码(红绿灯编程代码Python)

2023-12-20 03:42:38 数码极客 bianji01

 

python的推荐书籍有哪些

零基础如何学好python,作为一个学了python两三年的过来人,我当初也是从0开始一路摸索过来的,这里给想学python的小白们分享一点我的学习心得。

1.《笨方法学Python》、《流畅的python》、《EffectivePython:编写高质量Python代码的59个有效方法》、《PythonCookbook》。

2.《利用Python进行数据分析(原书第2版)》、《Python数据科学手册(图灵出品)》。

python数据分析与应用第三章代码3-5的数据哪来的

savetxt

importnumpyasnp

i2=np.eye(2)

np.savetxt("eye.txt",i2)

3.4读入CSV文件

#AAPL,28-01-2011,,344.17,344.4,333.53,336.1,21144800

c,v=np.lOAdtxt(data.csv,delimiter=,,usecols=(6,7),unpack=True)#index从0开始

3.6.1算术平均值

np.mean(c)=np.average(c)

3.6.2加权平均值

t=np.arange(len(c))

np.average(c,weights=t)

3.8极值

np.min(c)

np.max(c)

np.ptp(c)最大值与最小值的差值

3.10统计分析

np.median(c)中位数

np.msort(c)升序排序

np.var(c)方差

3.12分析股票收益率

np.diff(c)可以返回一个由相邻数组元素的差

值构成的数组

returns=np.diff(arr)/arr[:-1]#diff返回的数组比收盘价数组少一个元素

np.std(c)标准差

对数收益率

logreturns=np.diff(np.log(c))#应检查输入数组以确保其不含有零和负数

where可以根据指定的条件返回所有满足条件的数

组元素的索引值。

posretindices=np.where(returns>0)

np.sqrt(1./252.)平方根,浮点数

3.14分析日期数据

#AAPL,28-01-2011,,344.17,344.4,333.53,336.1,21144800

dates,close=np.loadtxt(data.csv,delimiter=,,usecols=(1,6),converters={1:datestr2num},unpack=True)

print"Dates=",dates

defdatestr2num(s):

returndatetime.datetime.strptime(s,"%d-%m-%Y").date().weekday()

#星期一0

#星期二1

#星期三2

#星期四3

#星期五4

#星期六5

#星期日6

#output

Dates=[4.0.1.2.3.4.0.1.2.3.4.0.1.2.3.4.1.2.4.0.1.2.3.4.0.

1.2.3.4.]

averages=np.zeros(5)

foriinrange(5):

indices=np.where(dates==i)

prices=np.take(close,indices)#按数组的元素运算,产生一个数组作为输出。

>>>a=[4,3,5,7,6,8]

>>>indices=[0,1,4]

>>>np.take(a,indices)

array([4,3,6])

np.argmax(c)#返回的是数组中最大元素的索引值

np.argmin(c)

3.16汇总数据

#AAPL,28-01-2011,,344.17,344.4,333.53,336.1,21144800

#得到第一个星期一和最后一个星期五

first_monday=np.ravel(np.where(dates==0))[0]

last_friday=np.ravel(np.where(dates==4))[-1]

#创建一个数组,用于存储三周内每一天的索引值

weeks_indices=np.arange(first_monday,last_friday+1)

#按照每个子数组5个元素,用split函数切分数组

weeks_indices=np.split(weeks_indices,5)

#output

[array([1,2,3,4,5]),array([6,7,8,9,10]),array([11,12,13,14,15])]

weeksummary=np.apply_along_axis(summarize,1,weeks_indices,open,high,low,close)

defsummarize(a,o,h,l,c):#open,high,low,close

monday_open=o[a[0]]

week_high=np.max(np.take(h,a))

week_low=np.min(np.take(l,a))

friday_close=c[a[-1]]

return("APPL",monday_open,week_high,week_low,friday_close)

np.savetxt("weeksummary.csv",weeksummary,delimiter=",",fmt="%s")#指定了文件名、需要保存的数组名、分隔符(在这个例子中为英文标点逗号)以及存储浮点数的格式。

0818b9ca8b590ca3270a3433284dd417.png

格式字符串以一个百分号开始。接下来是一个可选的标志字符:-表示结果左对齐,0表示左端补0,+表示输出符号(正号+或负号-)。第三部分为可选的输出宽度参数,表示输出的最小位数。第四部分是精度格式符,以”.”开头,后面跟一个表示精度的整数。最后是一个类型指定字符,在例子中指定为字符串类型。

numpy.apply_along_axis(func1d,axis,arr,*args,**kwargs)

>>>defmy_func(a):

..."""Averagefirstandlastelementofa1-Darray"""

...return(a[0]+a[-1])*0.5

>>>b=np.array([[1,2,3],[4,5,6],[7,8,9]])

>>>np.apply_along_axis(my_func,0,b)#沿着X轴运动,取列切片

array([4.,5.,6.])

>>>np.apply_along_axis(my_func,1,b)#沿着y轴运动,取行切片

array([2.,5.,8.])

>>>b=np.array([[8,1,7],[4,3,9],[5,2,6]])

>>>np.apply_along_axis(sorted,1,b)

array([[1,7,8],

[3,4,9],

[2,5,6]])

3.20计算简单移动平均线

(1)使用ones函数创建一个长度为N的元素均初始化为1的数组,然后对整个数组除以N,即可得到权重。如下所示:

N=int(sys.argv[1])

weights=np.ones(N)/N

print"Weights",weights

在N=5时,输出结果如下:

Weights[0.20.20.20.20.2]#权重相等

(2)使用这些权重值,调用convolve函数:

c=np.loadtxt(data.csv,delimiter=,,usecols=(6,),unpack=True)

sma=np.convolve(weights,c)[N-1:-N+1]#卷积是分析数学中一种重要的运算,定义为一个函数与经过翻转和平移的另一个函数的乘积的积分。

t=np.arange(N-1,len(c))#作图

plot(t,c[N-1:],lw=1.0)

plot(t,sma,lw=2.0)

show()

3.22计算指数移动平均线

指数移动平均线(exponentialmovingaverage)。指数移动平均线使用的权重是指数衰减的。对历史上的数据点赋予的权重以指数速度减小,但永远不会到达0。

x=np.arange(5)

print"Exp",np.exp(x)

#output

Exp[1.2.718281837.389056120.0855369254.59815003]

Linspace返回一个元素值在指定的范围内均匀分布的数组。

print"Linspace",np.linspace(-1,0,5)#起始值、终止值、可选的元素个数

#output

Linspace[-1.-0.75-0.5-0.250.]

(1)权重计算

N=int(sys.argv[1])

weights=np.exp(np.linspace(-1.,0.,N))

(2)权重归一化处理

weights/=weights.sum()

print"Weights",weights

#output

Weights[0.114050720.146444030.188037850.241445380.31002201]

(3)计算及作图

c=np.loadtxt(data.csv,delimiter=,,usecols=(6,),unpack=True)

ema=np.convolve(weights,c)[N-1:-N+1]

t=np.arange(N-1,len(c))

plot(t,c[N-1:],lw=1.0)

plot(t,ema,lw=2.0)

show()

3.26用线性模型预测价格

(x,residuals,rank,s)=np.linalg.lstsq(A,b)#系数向量x、一个残差数组、A的秩以及A的奇异值

printx,residuals,rank,s

#计算下一个预测值

printnp.dot(b,x)

3.28绘制趋势线

>>>x=np.arange(6)

>>>x=x.reshape((2,3))

array([[0,1,2],[3,4,5]])

>>>np.ones_like(x)#用1填充数组

array([[1,1,1],[1,1,1]])

zeros_like

empty_like

zeros

empty

3.30数组的修剪和压缩

a=np.arange(5)

print"a=",a

print"Clipped",a.clip(1,2)#将所有比给定最大值还大的元素全部设为给定的最大值,而所有比给定最小值还小的元素全部设为给定的最小值

#output

a=[01234]

Clipped[11222]

a=np.arange(4)

printa

print"Compressed",a.compress(a>2)#返回一个根据给定条件筛选后的数组

#output

[0123]

Compressed[3]

b=np.arange(1,9)

print"b=",b

print"Factorial",b.prod()#输出数组元素阶乘结果

#output

b=[12345678]

Factorial40320

print"Factorials",b.cumprod()

#output

python核心编程讲的是python2.x还是python3.x

解释python代码

l = []定义一个列表for i in range(3): # 循环输入3个数 range是生成一个序列 为了for循环使用的x = int(raw_input(integer:\n)) # 输入一个数字 因为输入的是字符串 还要转换成整数l.append(x) #把这个数字添加到列表中l.sort() # 对列表进行排序print l # 输出这个列表就是这个结果了integer:8integer:5integer:6[5, 6, 8]

声明:易趣百科所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系315127732@qq.com
广告位招租
横幅广告