具有浮点变量的虚拟数据

时间:2017-05-02 21:21:12

标签: numpy range

我尝试使用以下代码创建一些虚拟位置数据:

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 个答案:

答案 0 :(得分:1)

您基本上从该范围数组中选取一个随机整数,并假设该范围数组中的元素均匀分布以进行拾取。我们可以使用“discrete uniform” distribution之后的numpy.random.random_integers执行相同的任务。此功能允许我们指定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