【发布时间】:2017-04-13 08:53:23
【问题描述】:
我有一个具有这种结构的二维坐标列表:
coo = [(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0)]
coo[0] 是存储在元组中的第一个坐标。
我想选择两个不同的随机坐标。我当然可以使用这种方法:
import numpy as np
rndcoo1 = coo[np.random.randint(0,len(coo))]
rndcoo2 = coo[np.random.randint(0,len(coo))]
if rndcoo1 != rndcoo2:
#do something
但是因为我必须重复这个操作 1'000'000 次,所以我想知道是否有更快的方法来做到这一点。 np.random.choice() 不能用于 2d 数组有没有我可以使用的替代方法?
【问题讨论】:
-
coo实际上是一个 numpy 数组吗?您是否尝试过random.choice而不是np.random.choice?rndcoo1和rndcoo2应该不同吗? -
@ G M rndcoo1,rndcoo2 = [coo[np.random.choice(len(coo))] for __ in range(2)]
-
@tobias_k coo 如果需要可以是一个列表。实际上我不知道可以使用 random.choice 并且看起来更好。我必须选择两个不同的坐标不能相同。
-
@GM
random.sample(coo, 2)Python 不会让你变得更快。 -
@tobias_k 我发现
random.choice比np.random.randint稍慢
标签: python performance numpy random