Numpy 带有浮点变量的虚拟数据

Numpy 带有浮点变量的虚拟数据,numpy,range,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(choi

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

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秒。。有没有办法让它更快


谢谢,

您基本上是从该范围数组中拾取一个随机整数,并假设该元素在该范围数组中均匀分布以进行拾取。我们可以用下面的“离散均匀”分布来完成同样的任务。此函数允许我们指定
值。
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

读了这份文件,他们说它不推荐使用。所以我使用randint而不是get_num,它位于随机模块-11.4 ns中。谢谢你的提示!;)