摘要:為了解決這一矛盾,同時(shí)擴(kuò)充數(shù)據(jù)類型,以下簡稱就應(yīng)運(yùn)而生了。在數(shù)據(jù)分析大數(shù)據(jù)機(jī)器學(xué)習(xí),神經(jīng)網(wǎng)絡(luò)方面都可以看到的身影。元素查找有以下列表我們可以使用庫進(jìn)行信息提取除此之外,我們還可以定義一個(gè)函數(shù)這樣,將會(huì)使用中的數(shù)以的返回值作為判斷依據(jù)。
前面
Python作為一種弱類型語言,雖身帶高效開發(fā)的BUFF,但同時(shí)也有著不出眾的運(yùn)行性能。由于數(shù)據(jù)類型的判斷是在解釋器內(nèi)部進(jìn)行,所以對于每一個(gè)變量操作后都要重新判斷數(shù)據(jù)類型,這勢必增加解釋器的負(fù)擔(dān)。為了解決這一矛盾,同時(shí)擴(kuò)充Python數(shù)據(jù)類型,numpy(以下簡稱np)就應(yīng)運(yùn)而生了。np不僅提供了諸如整數(shù)數(shù)組,線性方程、矩陣的相關(guān)數(shù)據(jù)類型,還可以進(jìn)行一系列的操作運(yùn)算,同時(shí)由于底層代碼用C編寫的,所以運(yùn)行起來性能也不錯(cuò)。在數(shù)據(jù)分析、大數(shù)據(jù)、機(jī)器學(xué)習(xí),神經(jīng)網(wǎng)絡(luò)方面都可以看到np的身影。在學(xué)習(xí)np之前,先來補(bǔ)充python的其它常用數(shù)據(jù)技巧:
數(shù)組解壓>>>list1 = [1,2,3,4,["a","b","c"]] >>>var1, var2, var3, var4, vars1 = list1 1 2 3 4 ["a", "b", "c", "d"]
通過上面這種方法可以使用多個(gè)變量去接收一個(gè)list(或者tuple)結(jié)構(gòu)。
當(dāng)然,我們知道Python可以使用星號(hào)+變量名來將多出的元素保存到一個(gè)元組中:
>>>*vars1, var1 = list >>>vars1, var1 ([1, 2, 3, 4], ["a", "b", "c", "d"])
可以看出使用星號(hào)后,只會(huì)為list最后幾個(gè)元素保留,其它元素都?xì)w星號(hào)的元素接收,以下寫法更加明顯:
>>>var1,*vars1 = list1 >>>var1,*vars1 (1, 2, 3, 4, ["a", "b", "c", "d"])
繼續(xù)多分配幾個(gè)數(shù)組:
>>>var1,var2,var3,*vars1 = list1 >>>var1,var2,var3,vars1 (1, 2, 3, [4, ["a", "b", "c", "d"]])
可以看出星號(hào)所包含的變量總會(huì)在最后被分配。
這個(gè)方法有什么實(shí)用意義呢,比如有以下字符串:
"By777:20:Python:Linux:Web"
可以使用上面的方式來提取有用的信息:
>>>str = "By777:20:Python:Linux:Web" >>>name, age, *tools = str.split(":")定長列表
定長列表常常用來處理消息隊(duì)列,作用類似于棧,我們可以使用下面方式來很方便的使用消息隊(duì)列:
>>>from collections import deque
deque可以看作list的加強(qiáng)版本,可以設(shè)置最大長度:
>>>d = deque(maxlen=10) >>>for i in range(12):d.append(i) >>>d deque([2, 3, 4, 5, 6, 7, 8, 9, 10, 11])
可以看出第11個(gè)元素將第一個(gè)元素1壓了出去。
當(dāng)然我們還可以使用appendleft方法逆向壓入構(gòu)建逆序。
有以下列表:
>>>list2 =list(range(5)) >>>list2 [0, 1, 2, 3, 4]
我們可以使用heapq庫進(jìn)行信息提?。?/p>
>>>import heapq >>>heapq.nlargest(3,list2) [4, 3, 2]
除此之外,我們還可以定義一個(gè)函數(shù):
>>>def myfun(c): >>>if c>50: >>> return c**0.5 >>>return c >>>heapq.nlargest(2,list2,key=myfun) [4, 3]
這樣,將會(huì)使用list中的數(shù)以key的返回值作為判斷依據(jù)。
多值映射>>>from collections import defaultdict >>>d = defaultdict(list) >>>d defaultdir(list,{})
這樣我們就構(gòu)建了一個(gè)默認(rèn)的key對應(yīng)values默認(rèn)為list類型的字典
那么我們就可以繼續(xù)進(jìn)行賦值操作:
>>>d["a"].append(1) >>>d defaultdict(list, {"a": [1]}) …… >>>d defaultdict(list, {"a": [1, 1, 2]})
同樣,也可以定義為set類型:
>>>d_set = defaultdict(set, {}) >>>d_set["a"].add(1) >>>d_set defaultdict(set, {"a": {1}})有序字典
>>>from collections import OrderedDict
使用有序字典的好處是的鍵值的順序是按照添加的順序進(jìn)行的:
>>>od = OrderedDict() >>>od["a"] = 1 >>>od["c"] = 3 >>>od["d"] = 2 >>>od OrderedDict([("a", 1), ("c", 3), ("d", 2)])
如果使用默認(rèn)字典對比明顯:
>>>d = {} >>>d["a"] = 1 >>>d["c"] = 2 >>>d["b"] = 3 >>>d {"a": 1, "b": 3, "c": 2}字典運(yùn)算
Python原生字典是可以進(jìn)行諸如+、-、&、min、zip等運(yùn)算的:
但是原生字典和OrderedDict不能直接運(yùn)算:
>>>d_cm -od --------------------------------------------------------------------------- TypeError Traceback (most recent call last)in () ----> 1 d_cm -od TypeError: unsupported operand type(s) for -: "dict" and "collections.OrderedDict"
我們要使用items方法:
>>>d_cm.items() - od.items()#只存在與d_cm不存在與od的元素 {("bar", 2), ("foo", 1), ("script", 3), ("test", 4)} >>>d_cm.keys() & od.keys()
此外,還有一下操作:
>>>d_cm = {"bar":2,"foo":1,"script":3} >>>min(d_cm,key=lambda k:d_cm[k])#需要通過函數(shù) "foo" >>>sorted (d_cm,key=lambda k ["foo", "bar", "script"] >>>min(zip(d_cm.values(),d_cm.keys())) (1, "foo")
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/40777.html
摘要:時(shí)間永遠(yuǎn)都過得那么快,一晃從年注冊,到現(xiàn)在已經(jīng)過去了年那些被我藏在收藏夾吃灰的文章,已經(jīng)太多了,是時(shí)候把他們整理一下了。那是因?yàn)槭詹貖A太亂,橡皮擦給設(shè)置私密了,不收拾不好看呀。 ...
摘要:屬于前一種,而且日益被用于數(shù)學(xué)計(jì)算機(jī)器學(xué)習(xí)和多種數(shù)據(jù)科學(xué)應(yīng)用。近來,由于擁有多個(gè)針對機(jī)器學(xué)習(xí)自然語言處理數(shù)據(jù)視覺化數(shù)據(jù)探索數(shù)據(jù)分析和數(shù)據(jù)挖掘的插件,豐富的數(shù)據(jù)科學(xué)生態(tài)體系得到了較大的發(fā)展,甚至有將數(shù)據(jù)科學(xué)社區(qū)化的趨勢。 譯者注:本文的英文原文地址是:Python for Data Science vs Python for Web Development,發(fā)布時(shí)間是10月29日。譯者一...
摘要:關(guān)于的三個(gè)謊言,你一定要清楚。這是的整個(gè)知識(shí)體系圖譜,對于新手來說,沒必要學(xué)那么多。第四自動(dòng)化測試一切關(guān)于自動(dòng)化的東西,似乎都可以滿足,可以滿足大多數(shù)自動(dòng)化工作,提升工作效率。這都是正常的,千萬別急著否定自己,懷疑自己。 ...
摘要:作者宋天龍來源科技大本營導(dǎo)語一切都始于年的那個(gè)圣誕節(jié),的誕生并不算恰逢其時(shí),它崛起充滿了機(jī)遇巧合,也有其必然性。年的圣誕節(jié),開始編寫語言的編譯器。年發(fā)布的標(biāo)志著的框架基本確定。年月發(fā)布了系列的最后一個(gè)版本,主版本號(hào)為。 showImg(https://segmentfault.com/img/remote/1460000019862276); 作者 | 宋天龍來源 | AI科技大本營 ...
摘要:我們來看一下美國相關(guān)專業(yè)人員對兩者的對比,只是粗略而不精準(zhǔn)的翻譯一下。小結(jié)其實(shí)在寫這篇文章之前,我就問過一下包括清華在內(nèi)的學(xué)校以及一些數(shù)學(xué)專業(yè)的學(xué)生,和還是占主流,但是經(jīng)過一番調(diào)查發(fā)現(xiàn)在美國在數(shù)據(jù)科學(xué)數(shù)學(xué)等方面好像漸成壓倒性的優(yōu)勢。 作為一枚程序員,想要研究Python編程語言與數(shù)學(xué)學(xué)習(xí)(教學(xué))的結(jié)合,就不能不了解以及比對一下其他數(shù)學(xué)學(xué)習(xí)與應(yīng)用的解決方案,比如R語言、Matlab等數(shù)學(xué)...
摘要:學(xué)習(xí)筆記七數(shù)學(xué)形態(tài)學(xué)關(guān)注的是圖像中的形狀,它提供了一些方法用于檢測形狀和改變形狀。學(xué)習(xí)筆記十一尺度不變特征變換,簡稱是圖像局部特征提取的現(xiàn)代方法基于區(qū)域圖像塊的分析。本文的目的是簡明扼要地說明的編碼機(jī)制,并給出一些建議。 showImg(https://segmentfault.com/img/bVRJbz?w=900&h=385); 前言 開始之前,我們先來看這樣一個(gè)提問: pyth...
閱讀 3572·2021-11-25 09:43
閱讀 3149·2021-10-08 10:04
閱讀 1638·2019-08-26 12:20
閱讀 2069·2019-08-26 12:09
閱讀 612·2019-08-23 18:25
閱讀 3587·2019-08-23 17:54
閱讀 2341·2019-08-23 17:50
閱讀 815·2019-08-23 14:33