真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

pythonema函數(shù) python ema

使用python實現(xiàn)ema(指數(shù)移動平均的計算)

a?=?2/13

創(chuàng)新互聯(lián)服務(wù)項目包括蒸湘網(wǎng)站建設(shè)、蒸湘網(wǎng)站制作、蒸湘網(wǎng)頁制作以及蒸湘網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,蒸湘網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到蒸湘省份的部分城市,未來相信會繼續(xù)擴大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

Prices?=?[0.0]?#prices?of?everyday

EMAs?=?[0.0]?#?ems?of?everyday

def?ema?(?N?,?Price)?:

Prices.append(Price)

if?N=1:

EMAs.append(Price)

else?:

EMAs.append((1-a)*EMAs[N-1]?+?a*Price)

ema(1,1)

ema(2,3)

print?(EMAs[1])

print?(EMAs[2])

average在python中的用法

函數(shù)函數(shù)是代碼的一種組織形式

函數(shù)應(yīng)該能完成一項特定的工作,而且一般一個函數(shù)只完成一項工作

有些語言,分函數(shù)和過程兩個概念,通俗解釋是,有返回結(jié)果的是函數(shù),無返回結(jié)果的叫過程,python不加以區(qū)分

函數(shù)的使用函數(shù)使用需要先定義

使用函數(shù),俗稱調(diào)用# 定義一個函數(shù)

# 只是定義的話不會執(zhí)行

# 1. def關(guān)鍵字,后跟一個空格

# 2. 函數(shù)名,自己定義,起名需要遵循便令命名規(guī)則,約定俗成,大駝峰命名只給類用

# 3. 后面括號和冒號不能省,括號內(nèi)可以有參數(shù)

# 4. 函數(shù)內(nèi)所有代碼縮進

def func():

print("我是一個函數(shù)")

print("愛生活")

print("函數(shù)結(jié)束了")函數(shù)結(jié)束了# 函數(shù)的調(diào)用

# 直接寫出函數(shù)名字,后面小括號不能省略,括號內(nèi)內(nèi)容根據(jù)情況

func()我是一個函數(shù)

愛生活# 函數(shù)定義

def func():

print('A')

print('B')func()A

B

函數(shù)的參數(shù)和返回值參數(shù):負責(zé)給函數(shù)傳遞一些必要的數(shù)據(jù)或者信息形參(形式參數(shù)):在函數(shù)定義的時候用到的參數(shù),沒有具體值,只是一個占位符號

實參(實際參數(shù)):在調(diào)用函數(shù)的時候輸入的值

返回值:調(diào)用函數(shù)的時候的一個執(zhí)行結(jié)果使用return返回結(jié)果

如果沒有值需要返回,我們推薦使用return None表示函數(shù)結(jié)束

函數(shù)一旦執(zhí)行return,則函數(shù)立即結(jié)束

如果函數(shù)沒有return關(guān)鍵字,則函數(shù)默認返回None# 形參和實參的案例

# 參數(shù)person只是一個符號

# 調(diào)用的時候用另一個

def hello(person):

print("{},你好嗎?".format(person))

return None

p = "小明"

# 調(diào)用函數(shù),需要把p作為實參傳入

hello(p)小明,你好嗎?p = "小五"

hello(p)小五,你好嗎?pp = hello("小柒")

print(pp)小柒,你好嗎?

None# return案例

def hello(person):

print("{0},你好嗎?".format(person))

return "提前結(jié)束!"

print(1)

p = "小明"

rst = hello(p)

print(rst)小明,你好嗎?

提前結(jié)束!# help負責(zé)隨時為你提供幫助

help(None) # 等價于help(peint())Help on built-in function print in module builtins:

print(...)

print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)

Prints the values to a stream, or to sys.stdout by default.

Optional keyword arguments:

file: a file-like object (stream); defaults to the current sys.stdout.

sep: string inserted between values, default a space.

end: string appended after the last value, default a newline.

flush: whether to forcibly flush the stream.# 九九乘法表

# version 1.0

for o in range(1, 10): # 控制外循環(huán) 從 1 到 9

for i in range(1, o + 1): # 內(nèi)循環(huán),每次從第一個數(shù)字開始,打印到跟行數(shù)相同的數(shù)量

print(o * i, end=" ")

print()1

2 4

3 6 9

4 8 12 16

5 10 15 20 25

6 12 18 24 30 36

7 14 21 28 35 42 49

8 16 24 32 40 48 56 64

9 18 27 36 45 54 63 72 81help(print)Help on built-in function print in module builtins:

print(...)

print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)

Prints the values to a stream, or to sys.stdout by default.

Optional keyword arguments:

file: a file-like object (stream); defaults to the current sys.stdout.

sep: string inserted between values, default a space.

end: string appended after the last value, default a newline.

flush: whether to forcibly flush the stream.# 嘗試用函數(shù)來打印九九乘法表

def jiujiu():

for o in range(1, 10): # 控制外循環(huán) 從 1 到 9

for i in range(1, o + 1): # 內(nèi)循環(huán),每次從第一個數(shù)字開始,打印到跟行數(shù)相同的數(shù)量

print(o * i, end=" ")

print()

return None

jiujiu()

jiujiu()1

2 4

3 6 9

4 8 12 16

5 10 15 20 25

6 12 18 24 30 36

7 14 21 28 35 42 49

8 16 24 32 40 48 56 64

9 18 27 36 45 54 63 72 81

1

2 4

3 6 9

4 8 12 16

5 10 15 20 25

6 12 18 24 30 36

7 14 21 28 35 42 49

8 16 24 32 40 48 56 64

9 18 27 36 45 54 63 72 81# 改造上面函數(shù)

def printLine(line_num):

'''

line_num;代表行號

打印一行九九乘法表

'''

for i in range(1, line_num + 1):

print(line_num * i, end=" ")

print()

def jiujiu():

for o in range(1, 10): # 控制外循環(huán) 從 1 到 9

printLine(o)

return None

jiujiu()1

2 4

3 6 9

4 8 12 16

5 10 15 20 25

6 12 18 24 30 36

7 14 21 28 35 42 49

8 16 24 32 40 48 56 64

9 18 27 36 45 54 63 72 81

參數(shù)詳解python參考資料:headfirst python - 零基礎(chǔ)入門學(xué)習(xí)python(小甲魚)、流暢的python - 習(xí)題

參數(shù)分類普通參數(shù)/位置參數(shù)

默認參數(shù)

關(guān)鍵字參數(shù)

收集參數(shù)

普通參數(shù)c參見上例

定義的時候直接定義變量名

調(diào)用的時候直接把變量或者值放入指定位置def 函數(shù)名(參數(shù)1,參數(shù)2,.....):

函數(shù)體

# 調(diào)用

函數(shù)名(value1,value2,......)

# 調(diào)用的時候,具體值參考的是位置,按位置賦值

默認參數(shù)形參帶有默認值

調(diào)用的時候,如果沒有對相應(yīng)形參賦值,則使用默認值

python數(shù)據(jù)分析與應(yīng)用第三章代碼3-5的數(shù)據(jù)哪來的

savetxt

import numpy as np

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 算術(shù)平均值

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

3.6.2 加權(quán)平均值

t = np.arange(len(c))

np.average(c, weights=t)

3.8 極值

np.min(c)

np.max(c)

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

3.10 統(tǒng)計分析

np.median(c) 中位數(shù)

np.msort(c) 升序排序

np.var(c) 方差

3.12 分析股票收益率

np.diff(c) 可以返回一個由相鄰數(shù)組元素的差

值構(gòu)成的數(shù)組

returns = np.diff( arr ) / arr[ : -1] #diff返回的數(shù)組比收盤價數(shù)組少一個元素

np.std(c) 標(biāo)準(zhǔn)差

對數(shù)收益率

logreturns = np.diff( np.log(c) ) #應(yīng)檢查輸入數(shù)組以確保其不含有零和負數(shù)

where 可以根據(jù)指定的條件返回所有滿足條件的數(shù)

組元素的索引值。

posretindices = np.where(returns 0)

np.sqrt(1./252.) 平方根,浮點數(shù)

3.14 分析日期數(shù)據(jù)

# 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

def datestr2num(s):

return datetime.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)

for i in range(5):

indices = np.where(dates == i)

prices = np.take(close, indices) #按數(shù)組的元素運算,產(chǎn)生一個數(shù)組作為輸出。

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

indices = [0, 1, 4]

np.take(a, indices)

array([4, 3, 6])

np.argmax(c) #返回的是數(shù)組中最大元素的索引值

np.argmin(c)

3.16 匯總數(shù)據(jù)

# 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]

#創(chuàng)建一個數(shù)組,用于存儲三周內(nèi)每一天的索引值

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

#按照每個子數(shù)組5個元素,用split函數(shù)切分數(shù)組

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)

def summarize(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") #指定了文件名、需要保存的數(shù)組名、分隔符(在這個例子中為英文標(biāo)點逗號)以及存儲浮點數(shù)的格式。

0818b9ca8b590ca3270a3433284dd417.png

格式字符串以一個百分號開始。接下來是一個可選的標(biāo)志字符:-表示結(jié)果左對齊,0表示左端補0,+表示輸出符號(正號+或負號-)。第三部分為可選的輸出寬度參數(shù),表示輸出的最小位數(shù)。第四部分是精度格式符,以”.”開頭,后面跟一個表示精度的整數(shù)。最后是一個類型指定字符,在例子中指定為字符串類型。

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

def my_func(a):

... """Average first and last element of a 1-D array"""

... 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函數(shù)創(chuàng)建一個長度為N的元素均初始化為1的數(shù)組,然后對整個數(shù)組除以N,即可得到權(quán)重。如下所示:

N = int(sys.argv[1])

weights = np.ones(N) / N

print "Weights", weights

在N = 5時,輸出結(jié)果如下:

Weights [ 0.2 0.2 0.2 0.2 0.2] #權(quán)重相等

(2) 使用這些權(quán)重值,調(diào)用convolve函數(shù):

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

sma = np.convolve(weights, c)[N-1:-N+1] #卷積是分析數(shù)學(xué)中一種重要的運算,定義為一個函數(shù)與經(jīng)過翻轉(zhuǎn)和平移的另一個函數(shù)的乘積的積分。

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

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

plot(t, sma, lw=2.0)

show()

3.22 計算指數(shù)移動平均線

指數(shù)移動平均線(exponential moving average)。指數(shù)移動平均線使用的權(quán)重是指數(shù)衰減的。對歷史上的數(shù)據(jù)點賦予的權(quán)重以指數(shù)速度減小,但永遠不會到達0。

x = np.arange(5)

print "Exp", np.exp(x)

#output

Exp [ 1. 2.71828183 7.3890561 20.08553692 54.59815003]

Linspace 返回一個元素值在指定的范圍內(nèi)均勻分布的數(shù)組。

print "Linspace", np.linspace(-1, 0, 5) #起始值、終止值、可選的元素個數(shù)

#output

Linspace [-1. -0.75 -0.5 -0.25 0. ]

(1)權(quán)重計算

N = int(sys.argv[1])

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

(2)權(quán)重歸一化處理

weights /= weights.sum()

print "Weights", weights

#output

Weights [ 0.11405072 0.14644403 0.18803785 0.24144538 0.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 用線性模型預(yù)測價格

(x, residuals, rank, s) = np.linalg.lstsq(A, b) #系數(shù)向量x、一個殘差數(shù)組、A的秩以及A的奇異值

print x, residuals, rank, s

#計算下一個預(yù)測值

print np.dot(b, x)

3.28 繪制趨勢線

x = np.arange(6)

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

x

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

np.ones_like(x) #用1填充數(shù)組

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

類似函數(shù)

zeros_like

empty_like

zeros

ones

empty

3.30 數(shù)組的修剪和壓縮

a = np.arange(5)

print "a =", a

print "Clipped", a.clip(1, 2) #將所有比給定最大值還大的元素全部設(shè)為給定的最大值,而所有比給定最小值還小的元素全部設(shè)為給定的最小值

#output

a = [0 1 2 3 4]

Clipped [1 1 2 2 2]

a = np.arange(4)

print a

print "Compressed", a.compress(a 2) #返回一個根據(jù)給定條件篩選后的數(shù)組

#output

[0 1 2 3]

Compressed [3]

b = np.arange(1, 9)

print "b =", b

print "Factorial", b.prod() #輸出數(shù)組元素階乘結(jié)果

#output

b = [1 2 3 4 5 6 7 8]

Factorial 40320

print "Factorials", b.cumprod()

#output


分享文章:pythonema函數(shù) python ema
分享路徑:http://weahome.cn/article/dosgpji.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部