我想在0.
和2*np.pi
之间绘制10个不在(np.radians(101),np.radians(298))
范围内的浮点数。蛮力方法是
rand_ra=[]
while len(rand_ra) <= 10:
x=np.random.uniform(0.,2*np.pi,100) #pick 100 or whatever number you want
for y in x :
if 0. <= y <= np.radians(101) and np.radians(298)<=y<= 2.*np.pi :
rand_ra.append(y)
print rand_ra
但这是超级慢,因为被排除的区域是如此之大。有没有更省时的方法?
谢谢!
答案 0 :(得分:4)
预先计算排除范围size = np.radians(298) - np.radians(101)
的大小。在y
和0.
之间生成值2*np.pi - size
。如果y
大于np.radians(101)
,请向其添加size
。
答案 1 :(得分:4)
当我们处理圆圈时,这与仅在[np.radians(298) - 2 * pi, np.radians(101)]
范围内绘制数字相同。
那是:
sample = np.random.uniform(np.radians(298) - 2 * np.pi, np.radians(101), 100)
然后,简单地规范那些小于0
sample[sample < 0] += 2 * np.pi