2017-05-02 119 views
1

我嘗試用下面的代碼創建一些虛擬位置數據:與浮點型變量虛擬數據

import numpy as np 
import time 

def location(): 

    start_time = time.time() 

    latitude = choice([-1, 1]) * round(np.float32(choice(range(0, 90000000, 1)))/1000000, 6) 
    longitude = choice([-1, 1]) * round(np.float32(choice(range(0, 180000000, 1)))/1000000, 6) 
    lapse = time.time() - start_time 
    return latitude, longitude, lapse 

但時隔大約5.4秒..有沒有一種方法,使其更快?

謝謝,

回答

1

你基本上從採摘該範圍陣列的隨機整數,並假設在該範圍內陣列,用於拾取該元件的均勻分佈。我們可以使用執行「discrete uniform」 distribution之後的相同任務。該功能讓我們指定lowhigh值。這裏high值是包容性的。所以,爲了模擬我們的情況,我們需要減去1

因此,另一種方法是,像這樣 -

get_num = np.random.random_integers 
lat = np.random.choice([-1, 1])*round(get_num(0,90000000-1)/1000000.0,6) 
lon = np.random.choice([-1, 1])*round(get_num(0,180000000-1)/1000000.0,6) 

計時 -

In [5]: %timeit np.random.choice([-1, 1])*round(get_num(0,90000000-1)/1000000.0,6) 
100000 loops, best of 3: 10.7 µs per loop 

In [6]: %timeit np.random.choice([-1, 1])*round(get_num(0,180000000-1)/1000000.0,6) 
100000 loops, best of 3: 10.8 µs per loop 
+0

讀取DOC,他們說這已經過時了。所以我使用randint而不是get_num,它位於隨機模塊中 - 11.4 ns。謝謝你的提示! ;) –