3開始沒這個(gè)函數(shù)了,官方文檔是這么寫的
創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比望謨網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式望謨網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋望謨地區(qū)。費(fèi)用合理售后完善,10多年實(shí)體公司更值得信賴。
The cmp() function should be treated as gone, and the __cmp__() special method is no longer supported. Use __lt__() for sorting, __eq__() with __hash__(), and other rich comparisons as needed. (If you really need the cmp() functionality, you could use the expression (a b) - (a b) as the equivalent for cmp(a, b).)
大意就是cmp()函數(shù)已經(jīng)“離開”了,如果你真的需要cmp()函數(shù),你可以用表達(dá)式(a b) - (a b)代替cmp(a,b)
python的求
標(biāo)準(zhǔn)差
的函數(shù)是std,是numpy庫的成員,
如果非要
用sd函數(shù)求標(biāo)準(zhǔn)差,也不是不行(from
numpy
import
std
as
sd)。其參數(shù)是所需求標(biāo)準(zhǔn)差的矩陣或列表,
返回值
即標(biāo)準(zhǔn)差。示范如下:
import
numpy
as
np;
from
numpy
import
std
as
sd;
print([1,
2,3],"的標(biāo)準(zhǔn)差是);
print(sd([1,2,3]));
偏函數(shù)是將所要承載的函數(shù)作為partial()函數(shù)的第一個(gè)參數(shù),原函數(shù)的各個(gè)參數(shù)依次作為partial()函數(shù)后續(xù)的參數(shù),除非使用關(guān)鍵字參數(shù)。
通過語言描述可能無法理解偏函數(shù)是怎么使用的,那么就舉一個(gè)常見的例子來說明。在這個(gè)例子里,我們實(shí)現(xiàn)了一個(gè)取余函數(shù),對于整數(shù)100,取得對于不同數(shù)m的100%m的余數(shù)。
簡單理解偏函數(shù)就是“函數(shù)的參數(shù)有默認(rèn)值”
比如一個(gè)函數(shù):
def add_five(fir, sec=5):
return fir+sec
這個(gè)函數(shù)就是偏函數(shù)
調(diào)用時(shí)比如傳參數(shù)指定 fir 的值,但是 sec 的值是可以不指定的(假如不指定,就是5)
于是:
add_five(1,2) = 3,
add_five(1) = 6
數(shù)學(xué)相關(guān)
abs(a) : 求取絕對值。abs(-1)
max(list) : 求取list最大值。max([1,2,3])
min(list) : 求取list最小值。min([1,2,3])
sum(list) : 求取list元素的和。 sum([1,2,3]) 6
sorted(list) : 排序,返回排序后的list。
len(list) : list長度,len([1,2,3])
divmod(a,b): 獲取商和余數(shù)。 divmod(5,2) (2,1)
pow(a,b) : 獲取乘方數(shù)。pow(2,3) 8
round(a,b) : 獲取指定位數(shù)的小數(shù)。a代表浮點(diǎn)數(shù),b代表要保留的位數(shù)。round(3.1415926,2) 3.14
range(a[,b]) : 生成一個(gè)a到b的數(shù)組,左閉右開。range(1,10) [1,2,3,4,5,6,7,8,9]
類型轉(zhuǎn)換
int(str) : 轉(zhuǎn)換為int型。int('1') 1
float(int/str) : 將int型或字符型轉(zhuǎn)換為浮點(diǎn)型。float('1') 1.0
str(int) : 轉(zhuǎn)換為字符型。str(1) '1'
bool(int) : 轉(zhuǎn)換為布爾類型。 str(0) False str(None) False
bytes(str,code) : 接收一個(gè)字符串,與所要編碼的格式,返回一個(gè)字節(jié)流類型。bytes('abc', 'utf-8') b'abc' bytes(u'爬蟲', 'utf-8') b'xe7x88xacxe8x99xab'
list(iterable) : 轉(zhuǎn)換為list。 list((1,2,3)) [1,2,3]
iter(iterable): 返回一個(gè)可迭代的對象。 iter([1,2,3]) list_iterator object at 0x0000000003813B00
dict(iterable) : 轉(zhuǎn)換為dict。 dict([('a', 1), ('b', 2), ('c', 3)]) {'a':1, 'b':2, 'c':3}
enumerate(iterable) : 返回一個(gè)枚舉對象。
tuple(iterable) : 轉(zhuǎn)換為tuple。 tuple([1,2,3]) (1,2,3)
set(iterable) : 轉(zhuǎn)換為set。 set([1,4,2,4,3,5]) {1,2,3,4,5} set({1:'a',2:'b',3:'c'}) {1,2,3}
hex(int) : 轉(zhuǎn)換為16進(jìn)制。hex(1024) '0x400'
oct(int) : 轉(zhuǎn)換為8進(jìn)制。 oct(1024) '0o2000'
bin(int) : 轉(zhuǎn)換為2進(jìn)制。 bin(1024) '0b10000000000'
chr(int) : 轉(zhuǎn)換數(shù)字為相應(yīng)ASCI碼字符。 chr(65) 'A'
ord(str) : 轉(zhuǎn)換ASCI字符為相應(yīng)的數(shù)字。 ord('A') 65
相關(guān)操作
eval****() : 執(zhí)行一個(gè)表達(dá)式,或字符串作為運(yùn)算。 eval('1+1') 2
exec() : 執(zhí)行python語句。 exec('print("Python")') Python
filter(func, iterable) : 通過判斷函數(shù)fun,篩選符合條件的元素。 filter(lambda x: x3, [1,2,3,4,5,6]) filter object at 0x0000000003813828
map(func, *iterable) : 將func用于每個(gè)iterable對象。 map(lambda a,b: a+b, [1,2,3,4], [5,6,7]) [6,8,10]
zip(*iterable) : 將iterable分組合并。返回一個(gè)zip對象。 list(zip([1,2,3],[4,5,6])) [(1, 4), (2, 5), (3, 6)]
type():返回一個(gè)對象的類型。
id(): 返回一個(gè)對象的唯一標(biāo)識值。
hash(object):返回一個(gè)對象的hash值,具有相同值的object具有相同的hash值。 hash('python') 7070808359261009780
help():調(diào)用系統(tǒng)內(nèi)置的幫助系統(tǒng)。
isinstance():判斷一個(gè)對象是否為該類的一個(gè)實(shí)例。
issubclass():判斷一個(gè)類是否為另一個(gè)類的子類。
globals() : 返回當(dāng)前全局變量的字典。
next(iterator[, default]) : 接收一個(gè)迭代器,返回迭代器中的數(shù)值,如果設(shè)置了default,則當(dāng)?shù)髦械脑乇闅v后,輸出default內(nèi)容。
reversed(sequence) : 生成一個(gè)反轉(zhuǎn)序列的迭代器。 reversed('abc') ['c','b','a']
##最小二乘法
import?numpy?as?np???##科學(xué)計(jì)算庫?
import?scipy?as?sp???##在numpy基礎(chǔ)上實(shí)現(xiàn)的部分算法庫
import?matplotlib.pyplot?as?plt??##繪圖庫
from?scipy.optimize?import?leastsq??##引入最小二乘法算法
'''
設(shè)置樣本數(shù)據(jù),真實(shí)數(shù)據(jù)需要在這里處理
'''
##樣本數(shù)據(jù)(Xi,Yi),需要轉(zhuǎn)換成數(shù)組(列表)形式
Xi=np.array([6.19,2.51,7.29,7.01,5.7,2.66,3.98,2.5,9.1,4.2])
Yi=np.array([5.25,2.83,6.41,6.71,5.1,4.23,5.05,1.98,10.5,6.3])
'''
設(shè)定擬合函數(shù)和偏差函數(shù)
函數(shù)的形狀確定過程:
1.先畫樣本圖像
2.根據(jù)樣本圖像大致形狀確定函數(shù)形式(直線、拋物線、正弦余弦等)
'''
##需要擬合的函數(shù)func?:指定函數(shù)的形狀
def?func(p,x):
k,b=p
return?k*x+b
##偏差函數(shù):x,y都是列表:這里的x,y更上面的Xi,Yi中是一一對應(yīng)的
def?error(p,x,y):
return?func(p,x)-y
'''
主要部分:附帶部分說明
1.leastsq函數(shù)的返回值tuple,第一個(gè)元素是求解結(jié)果,第二個(gè)是求解的代價(jià)值(個(gè)人理解)
2.官網(wǎng)的原話(第二個(gè)值):Value?of?the?cost?function?at?the?solution
3.實(shí)例:Para=(array([?0.61349535,??1.79409255]),?3)
4.返回值元組中第一個(gè)值的數(shù)量跟需要求解的參數(shù)的數(shù)量一致
'''
#k,b的初始值,可以任意設(shè)定,經(jīng)過幾次試驗(yàn),發(fā)現(xiàn)p0的值會(huì)影響cost的值:Para[1]
p0=[1,20]
#把error函數(shù)中除了p0以外的參數(shù)打包到args中(使用要求)
Para=leastsq(error,p0,args=(Xi,Yi))
#讀取結(jié)果
k,b=Para[0]
print("k=",k,"b=",b)
print("cost:"+str(Para[1]))
print("求解的擬合直線為:")
print("y="+str(round(k,2))+"x+"+str(round(b,2)))
'''
繪圖,看擬合效果.
matplotlib默認(rèn)不支持中文,label設(shè)置中文的話需要另行設(shè)置
如果報(bào)錯(cuò),改成英文就可以
'''
#畫樣本點(diǎn)
plt.figure(figsize=(8,6))?##指定圖像比例:?8:6
plt.scatter(Xi,Yi,color="green",label="樣本數(shù)據(jù)",linewidth=2)?
#畫擬合直線
x=np.linspace(0,12,100)?##在0-15直接畫100個(gè)連續(xù)點(diǎn)
y=k*x+b?##函數(shù)式
plt.plot(x,y,color="red",label="擬合直線",linewidth=2)?
plt.legend(loc='lower?right')?#繪制圖例
plt.show()