Python中的各種方法一覽
目錄
numpy.random.RandomState
numpy.random.RandomState()是一個偽隨機數生成器。那麼偽隨機數是什麼呢?
偽隨機數是用確定性的演算法計算出來的似來自[0,1]均勻分佈的隨機數序列。並不真正的隨機,但具有類似於隨機數的統計特徵,如均勻性、獨立性等。
其中種子值不同會導致生成的隨機數不同。
numpy.random.rand
使用 numpy.random.rand 方法生成任意隨機數
生成單個隨機數。
r1=np.random.rand()
-》0.5016777172563354
生成指定結構的隨機陣列。
r2=np.random.rand(3)
-》 [ 0.70156865 0.42589945 0.94348143] #3列
r2=np.random.rand(2,3)
-》 [[ 0.73289586 0.33973611 0.10691378] #2行3列 [ 0.0341497 0.59655438 0.21744271]]
python 判斷字串是否包含子字串
第一種方法:in
string = 'helloworld'
if 'world' in string:
print 'Exist'
else:
print 'Not exist'
Index和find
Python index() 方法檢測字串中是否包含子字串 str ,如果指定 beg(開始) 和 end(結束) 範圍,則檢查是否包含在指定範圍內,該方法與 python find()方法一樣,只不過如果str不在 string中會報一個異常。
語法
index()方法語法:
str.index(str, beg=0, end=len(string))
引數
str -- 指定檢索的字串
beg -- 開始索引,預設為0。
end -- 結束索引,預設為字串的長度。
返回值
如果包含子字串返回開始的索引值,否則丟擲異常。
例項
以下例項展示了index()方法的例項:
#!/usr/bin/python
str1 = "this is string example....wow!!!";
str2 = "exam";
print str1.index(str2);
print str1.index(str2, 10);
print str1.index(str2, 40);
以上例項輸出結果如下:
15
15
Traceback (most recent call last):
File "test.py", line 8, in
print str1.index(str2, 40);
ValueError: substring not found
shell returned 1
Python find() 方法檢測字串中是否包含子字串 str ,如果指定 beg(開始) 和 end(結束) 範圍,則檢查是否包含在指定範圍內,如果包含子字串返回開始的索引值,否則返回-1。
語法
find()方法語法:
str.find(str, beg=0, end=len(string))
引數
str -- 指定檢索的字串
beg -- 開始索引,預設為0。
end -- 結束索引,預設為字串的長度。
返回值
如果包含子字串返回開始的索引值,否則返回-1。
Python中改變陣列型別為uint8
np.array(X,dtype='uint8')
其中X為需要改變的陣列。
multiprocessing的例子
同時展示了queue和pipe的用法,在image_put, image_get, predict 函式中引數要對應上。
queue獲得佇列中資料用的是get()方法,pipe獲得佇列資料用的是recv()方法。
import multiprocessing as mp
pipe = mp.Pipe()
mp.set_start_method(method='spawn') # init
queues = [mp.Queue(maxsize=4) for _ in camera_ip_l]
processes = []
for queue, camera_ip in zip(queues, camera_ip_l):
processes.append(mp.Process(target=image_put, args=(queue, user_name, user_pwd, camera_ip)))
processes.append(mp.Process(target=image_get, args=(queue, camera_ip,pipe[0],)))
processes.append(mp.Process(target=predict, args=(pipe[1],)))
for process in processes:
process.daemon = True
process.start()
for process in processes:
process.join()
matplotlib畫折線圖的例子
t=time.strftime("%M:%S",time.localtime(time.time()))
plot_x.append(t) #以分鐘:秒為x軸
plot_y.append(float(predicted))#自定義的一個變數
plt.plot(plot_x,plot_y)
plt.xticks(plot_x,rotation=90) #x軸標籤旋轉90度
plt.ylim(0, 1.25) #y軸範圍
plt.xlabel("xxx") #x軸標題
plt.ylabel("xxx") #y軸標題
plt.title("xxx") #圖示題
plt.gcf().canvas.set_window_title("xxxx") #窗體標題
plt.draw() #畫圖
plt.pause(0.05)
獲取攝像頭的幀
cap = cv2.VideoCapture("rtsp://%s:%[email protected]%s//Streaming/Channels/%d" % (name, pwd, ip, channel))
if cap.isOpened():
print('HIKVISION')#海康攝像頭的寫法
else:
cap = cv2.VideoCapture("rtsp://%s:%[email protected]%s/cam/realmonitor?channel=%d&subtype=0" % (name, pwd, ip, channel))
print('DaHua')#大華攝像頭的寫法
while True:
q.put(cap.read()[1])#讀取幀並放入佇列(queue)
Python 3 generator的next方法
g.next() 改為 g.__next__()
g.next()是python 2的用法
引用上級或上上級目錄中的檔案
上級引用 import sys sys.path.append("..")
上上級引用 import sys sys.path.append("...")
astype()
轉換陣列的資料型別。
int32 --> float64 完全ojbk
float64 --> int32 會將小數部分截斷
string_ --> float64 如果字串陣列表示的全是數字,也可以用astype轉化為數值型別
super()
super()函式是用於呼叫父類(超類)的一個方法。
super 是用來解決多重繼承問題的,直接用類名呼叫父類方法在使用單繼承的時候沒問題,但是如果使用多繼承,會涉及到查詢順序(MRO)、重複呼叫(鑽石繼承)等種種問題。
MRO 就是類的方法解析順序表, 其實也就是繼承父類方法時的順序表。
#!/usr/bin/python
# -*- coding: UTF-8 -*-
class FooParent(object):
def __init__(self):
self.parent = 'I\'m the parent.'
print ('Parent')
def bar(self,message):
print ("%s from Parent" % message)
class FooChild(FooParent):
def __init__(self):
# super(FooChild,self) 首先找到 FooChild 的父類(就是類 FooParent),然後把類 FooChild 的物件轉換為類 FooParent 的物件
super(FooChild,self).__init__()
print ('Child')
def bar(self,message):
super(FooChild, self).bar(message)
print ('Child bar fuction')
print (self.parent)
if __name__ == '__main__':
fooChild = FooChild()
fooChild.bar('HelloWorld')
python range函式
python range() 函式可建立一個整數列表。
函式語法 range(start, stop[, step])
引數
start: 計數從 start 開始。預設是從 0 開始。例如range(5)等價於range(0, 5); stop: 計數到 stop 結束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]沒有5 step:步長,預設為1。例如:range(0, 5) 等價於 range(0, 5, 1)
numpy.random.randint
函式的作用是,返回一個隨機整型數,範圍從低(包括)到高(不包括),即[low, high)。
如果沒有寫引數high的值,則返回[0,low)的值。
引數
low: int 生成的數值最低要大於等於low。 (hign = None時,生成的數值要在[0, low)區間內) high: int (可選) 如果使用這個值,則生成的數值在[low, high)區間。 size: int or tuple of ints(可選) 輸出隨機數的尺寸,比如size = (m * n* k)則輸出同規模即m * n* k個隨機數。預設是None的,僅僅返回滿足要求的單一隨機數。 dtype: dtype(可選): 想要輸出的格式。如int64、int等等 輸出: out: int or ndarray of ints 返回一個隨機數或隨機數陣列
np.arange() 函式
返回一個有終點和起點的固定步長的排列,如[1,2,3,4,5],起點是1,終點是6,步長為1。
引數
np.arange()函式分為一個引數,兩個引數,三個引數三種情況 1)一個引數時,引數值為終點,起點取預設值0,步長取預設值1。 2)兩個引數時,第一個引數為起點,第二個引數為終點,步長取預設值1。 3)三個引數時,第一個引數為起點,第二個引數為終點,第三個引數為步長。其中步長支援小數
numpy inplace引數
該引數的主要作用是指示是否在本地資料上做更改。
當inplace=Fasle時,函式返回處理之後的資料,而原始資料並未發生任何變化。
當inplace=True時,函式返回None,而原始資料卻發生了變化。
排序演算法In-place和Out-place
in-place 佔用常數記憶體,不佔用額外記憶體
out-place 佔用額外記憶體