1. 程式人生 > 其它 >Python中的各種方法一覽

Python中的各種方法一覽

技術標籤:程式語言python

目錄

numpy.random.RandomState

numpy.random.rand

python 判斷字串是否包含子字串

Index和find

Python中改變陣列型別為uint8

multiprocessing的例子

matplotlib畫折線圖的例子

獲取攝像頭的幀

Python 3 generator的next方法

引用上級或上上級目錄中的檔案

astype()

super()

python range函式

numpy.random.randint

np.arange() 函式

numpy inplace引數

排序演算法In-place和Out-place


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 佔用額外記憶體