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