新聞中心
用python進(jìn)行抽樣的步驟:

成都創(chuàng)新互聯(lián)公司云計(jì)算的互聯(lián)網(wǎng)服務(wù)提供商,擁有超過13年的服務(wù)器租用、香港機(jī)房服務(wù)器托管、云服務(wù)器、虛擬主機(jī)、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗(yàn),已先后獲得國家工業(yè)和信息化部頒發(fā)的互聯(lián)網(wǎng)數(shù)據(jù)中心業(yè)務(wù)許可證。專業(yè)提供云主機(jī)、虛擬主機(jī)、域名與空間、VPS主機(jī)、云服務(wù)器、香港云服務(wù)器、免備案服務(wù)器等。
第1部分:導(dǎo)入需要的庫
import random # 導(dǎo)入標(biāo)準(zhǔn)庫 import numpy as np # 導(dǎo)入第三方庫
這里用到了Python內(nèi)置標(biāo)準(zhǔn)庫random以及第三方庫Numpy,前者用于做隨機(jī)抽樣,后者用于讀取文件并做數(shù)據(jù)切片使用。
第2部分:實(shí)現(xiàn)簡單隨機(jī)抽樣
data = np.loadtxt('data3.txt') # 導(dǎo)入普通數(shù)據(jù)文件
data_sample = data[random.sample([i for i in range(len(data))], 2000)]
# 隨機(jī)抽取2000個樣本
print(data_sample[:2]) # 打印輸出前2條數(shù)據(jù)
print(len(data_sample)) # 打印輸出抽樣樣本量首先通過Numpy的loadtxt方法讀取數(shù)據(jù)文件。
然后使用Random庫中的sample方法做數(shù)據(jù)抽樣。
由于sample庫要求抽取的對象是一個序列或set,因此這里使用了一個列表推導(dǎo)式直接基于data數(shù)據(jù)集的記錄數(shù)生成索引列表,
然后再返回給sample隨機(jī)抽樣,抽樣數(shù)量為2000;最后從data中直接基于索引獲得隨機(jī)抽樣后的結(jié)果。
打印輸出前2條數(shù)據(jù)和總抽樣樣本量。返回結(jié)果如下:
[[-4.59501348 8.82741653 4.40096599 3.40332532 -6.54589933] [-7.23173404 -8.92692519 6.82830873 3.0378005 4.64450399]] 2000
第3部分:傳統(tǒng)方法
ind = [] for i in range(len(data)): ind.append(i)
而這里的列表推導(dǎo)式的寫法[i for i in range(len(data))]除了在語法上更加簡潔和優(yōu)雅外,在性能上同樣會有提升。
我們通過如下實(shí)驗(yàn)做簡單測試,對從0到1000000的每個數(shù)求平方然后添加到列表。兩種方法如下:
# 方法1:傳統(tǒng)方法 import time t0=time.time() # 開始時間 ind = [] for i in range(1000000): sqr_values = i*i ind.append(sqr_values) t1 = time.time() # 結(jié)束時間 print(t1-t0) # 打印時間 # 方法2:列表推導(dǎo)式 import time t0=time.time() # 開始時間 sqr_values = [i*i for i in range(1000000)] t1 = time.time() # 結(jié)束時間 print(t1-t0) # 打印時間
上述代碼執(zhí)行后的輸出結(jié)果分別是:
0.39202237129211426 0.12700724601745605
上面只是簡單的計(jì)算邏輯并且數(shù)據(jù)量也不大,
如果配合大數(shù)據(jù)量以及更復(fù)雜的運(yùn)算,
那么效率提升會非常明顯。
網(wǎng)站題目:創(chuàng)新互聯(lián)Python教程:如何用Python進(jìn)行抽樣?
文章起源:http://www.dlmjj.cn/article/cdjjsei.html


咨詢
建站咨詢
