我尝试使用以下代码创建一些虚拟位置数据:
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秒..有没有办法让它更快?
谢谢,
答案 0 :(得分:1)
您基本上从该范围数组中选取一个随机整数,并假设该范围数组中的元素均匀分布以进行拾取。我们可以使用“discrete uniform” distribution
之后的numpy.random.random_integers
执行相同的任务。此功能允许我们指定low
和high
值。此处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