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