前面
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)
>>>d
deque([2, 3, 4, 5, 6, 7, 8, 9, 10, 11])
可以看出第11個元素將第乙個元素1壓了出去。
元素查詢
有以下列表:
>>>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
defaultdict(list, )
>>>d
defaultdict(list, )
同樣,也可以定義為set型別:
>>>d_set = defaultdict(set, {})
>>>d_set['a'].add(1)
>>>d_set
defaultdict(set, })
有序字典
>>>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
字典運算
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的元素
>>>d_cm.keys() & od.keys()
此外,還有一下操作:
>>>d_cm =
>>>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')
python金融分析 用於金融分析的Python包
recommended by activestate.1.numpy 實現各種陣列物件函式和傅利葉變換等等科學計算模組。3.matplotlib 乙個跨平台的數值繪圖包,可繪製高質量的2d,3d影象。4.mysql for python python操作mysql資料庫的介面軟體包。5.pyqt 乙...
mac終端輸入python預設開啟python3
1.終端開啟 bash profile檔案 open bash profile 2.新增以下內容到.bash profile檔案 setting path for python 3.5 path library frameworks python.framework versions 3.5 bin...
python基礎分析 資料分析 Python基礎
學python前要明確其使用目的。學python是為了進行資料分析,所以現階段最主要的任務是了解python的最基礎知識,然後通過運用python進行資料分析的專案,從而學會使用python。一 資料型別 1 整數 浮點數 字串 2 列表 list 2list.count obj 統計某個元素在列表...