【常見的內置函數(shù)】
讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領域值得信任、有價值的長期合作伙伴,公司提供的服務項目有:主機域名、虛擬主機、營銷軟件、網(wǎng)站建設、德保網(wǎng)站維護、網(wǎng)站推廣。
1、enumerate(iterable,start=0)
是python的內置函數(shù),是枚舉、列舉的意思,對于一個可迭代的(iterable)/可遍歷的對象(如列表、字符串),enumerate將其組成一個索引序列,利用它可以同時獲得索引和值。
2、zip(*iterables,strict=False)
用于將可迭代的對象作為參數(shù),將對象中對應的元素打包成一個個元組,然后返回由這些元組組成的列表。如果各個迭代器的元素個數(shù)不一致,則返回列表長度與最短的對象相同,利用*號操作符,可以將元組解壓為列表。
3、filter(function,iterable)
filter是將一個序列進行過濾,返回迭代器的對象,去除不滿足條件的序列。
4、isinstance(object,classinfo)
是用來判斷某一個變量或者是對象是不是屬于某種類型的一個函數(shù),如果參數(shù)object是classinfo的實例,或者object是classinfo類的子類的一個實例,
返回True。如果object不是一個給定類型的的對象, 則返回結果總是False
5、eval(expression[,globals[,locals]])
用來將字符串str當成有效的表達式來求值并返回計算結果,表達式解析參數(shù)expression并作為Python表達式進行求值(從技術上說是一個條件列表),采用globals和locals字典作為全局和局部命名空間。
【常用的句式】
1、format字符串格式化
format把字符串當成一個模板,通過傳入的參數(shù)進行格式化,非常實用且強大。
2、連接字符串
常使用+連接兩個字符串。
3、if...else條件語句
Python條件語句是通過一條或多條語句的執(zhí)行結果(True或者False)來決定執(zhí)行的代碼塊。其中if...else語句用來執(zhí)行需要判斷的情形。
4、for...in、while循環(huán)語句
循環(huán)語句就是遍歷一個序列,循環(huán)去執(zhí)行某個操作,Python中的循環(huán)語句有for和while。
5、import導入其他腳本的功能
有時需要使用另一個python文件中的腳本,這其實很簡單,就像使用import關鍵字導入任何模塊一樣。
奇異值分解(svd) 是線性代數(shù)中一種重要的矩陣分解
在Python的numpy包里面直接調用
其中,u和v是都是標準正交基,問題是v得到的結果到底是轉置之后的呢,還是沒有轉置的呢,其實這個也很好驗證,只要再把u,s,v在乘起來,如果結果還是A 那么就是轉置之后的,結果確實是這樣的,但是MATLAB卻與之不同,得到的v是沒有轉置過的
奇異值分解可以被用來計算矩陣的 偽逆 。若矩陣 M 的奇異值分解為
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 算術平均值
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 統(tǒng)計分析
np.median(c) 中位數(shù)
np.msort(c) 升序排序
np.var(c) 方差
3.12 分析股票收益率
np.diff(c) 可以返回一個由相鄰數(shù)組元素的差
值構成的數(shù)組
returns = np.diff( arr ) / arr[ : -1] #diff返回的數(shù)組比收盤價數(shù)組少一個元素
np.std(c) 標準差
對數(shù)收益率
logreturns = np.diff( np.log(c) ) #應檢查輸入數(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ù)組,用于存儲三周內每一天的索引值
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ù)組名、分隔符(在這個例子中為英文標點逗號)以及存儲浮點數(shù)的格式。
0818b9ca8b590ca3270a3433284dd417.png
格式字符串以一個百分號開始。接下來是一個可選的標志字符:-表示結果左對齊,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,即可得到權重。如下所示:
N = int(sys.argv[1])
weights = np.ones(N) / N
print "Weights", weights
在N = 5時,輸出結果如下:
Weights [ 0.2 0.2 0.2 0.2 0.2] #權重相等
(2) 使用這些權重值,調用convolve函數(shù):
c = np.loadtxt('data.csv', delimiter=',', usecols=(6,),unpack=True)
sma = np.convolve(weights, c)[N-1:-N+1] #卷積是分析數(shù)學中一種重要的運算,定義為一個函數(shù)與經(jīng)過翻轉和平移的另一個函數(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ù)移動平均線使用的權重是指數(shù)衰減的。對歷史上的數(shù)據(jù)點賦予的權重以指數(shù)速度減小,但永遠不會到達0。
x = np.arange(5)
print "Exp", np.exp(x)
#output
Exp [ 1. 2.71828183 7.3890561 20.08553692 54.59815003]
Linspace 返回一個元素值在指定的范圍內均勻分布的數(shù)組。
print "Linspace", np.linspace(-1, 0, 5) #起始值、終止值、可選的元素個數(shù)
#output
Linspace [-1. -0.75 -0.5 -0.25 0. ]
(1)權重計算
N = int(sys.argv[1])
weights = np.exp(np.linspace(-1. , 0. , N))
(2)權重歸一化處理
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 用線性模型預測價格
(x, residuals, rank, s) = np.linalg.lstsq(A, b) #系數(shù)向量x、一個殘差數(shù)組、A的秩以及A的奇異值
print x, residuals, rank, s
#計算下一個預測值
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) #將所有比給定最大值還大的元素全部設為給定的最大值,而所有比給定最小值還小的元素全部設為給定的最小值
#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ù)組元素階乘結果
#output
b = [1 2 3 4 5 6 7 8]
Factorial 40320
print "Factorials", b.cumprod()
#output
這兩個命令是完全不同的呀。
S=svd(A)表示對矩陣A進行SVD分解,分解的結果是得到3個矩陣,如果返回值只有一個,那么可以得到A的奇異值向量。
eig(A)表示求矩陣A的特征值。
所以區(qū)別就是,svd得到的是A的奇異值,eig得到的是A的特征值。
A'表示A的轉置矩陣,A'*A的n個非負特征值的平方根叫作矩陣A的奇異值。記為σi(A)。
希望可以幫助你,望采納!
python常見的內置函數(shù)有:
1. abs()函數(shù)返回數(shù)字的絕對值。
2. all() 函數(shù)用于判斷給定的參數(shù)中的所有元素是否都為 TRUE,如果是返回 True,否則返回 False。元素除了是 0、空、None、False 外都算 True;空元組、空列表返回值為True。
3. any() 函數(shù)用于判斷給定的參數(shù)是否全部為False,是則返回False,如果有一個為True,則返回True。 元素除了是 0、空、False外都算 TRUE。
4. bin()函數(shù)返回一個整數(shù)int或者長整數(shù)long int的二進制表示。
5. bool() 函數(shù)用于將給定參數(shù)轉換為布爾類型,如果參數(shù)不為空或不為0,返回True;參數(shù)為0或沒有參數(shù),返回False。
6. bytearray()方法返回一個新字節(jié)數(shù)組。這個數(shù)組里的元素是可變的,并且每個元素的值范圍: 0 = x 256(即0-255)。即bytearray()是可修改的二進制字節(jié)格式。
7. callable()函數(shù)用于檢查一個對象是否可調用的。對于函數(shù)、方法、lambda函式、類以及實現(xiàn)了 __call__ 方法的類實例, 它都返回 True。(可以加括號的都可以調用)
8. chr()函數(shù)用一個范圍在range(256)內(即0~255)的整數(shù)作參數(shù),返回一個對應的ASCII數(shù)值。
9. dict()函數(shù)用來將元組/列表轉換為字典格式。
10. dir()函數(shù)不帶參數(shù)時,返回當前范圍內的變量、方法和定義的類型列表;帶參數(shù)時,返回參數(shù)的屬性、方法列表。
擴展資料:
如何查看python3.6的內置函數(shù)?
1、首先先打開python自帶的集成開發(fā)環(huán)境IDLE;
2、然后我們直接輸入"dir(__builtins__)",需要注意的是builtins左右的下劃線都是兩個;
3、回車之后我們就可以看到python所有的內置函數(shù);
4、接下來我們學習第二種查看python內置函數(shù)的方法,我們直接在IDLE中輸入"import builtins",然后輸入"dir(builtins)";
5、然后回車,同樣的這個方法也可以得到所有的python內置的函數(shù);
6、這里我們可以使用python內置函數(shù)len()來查看python內置函數(shù)的個數(shù),這里我們直接輸入"len(dir(builtins))";
7、回車之后我們可以看到系統(tǒng)返回值153,說明我們現(xiàn)在這個版本中有153個內置函數(shù);
8、最后我們介紹一個比較有用的內置函數(shù)"help",python內置函數(shù)有一百多個,我們當然不能記住所有的函數(shù),這里python提供了一個"help"函數(shù),我們來看一個例子一起來體會一下help函數(shù)的用法,這里我們直接輸入"help(len)",然后回車,會看到系統(tǒng)給我們對于內置函數(shù)"len"的解釋,當然對于其他函數(shù)可能會有更加詳細的解釋以及用法提示。