我想使用thisGitHub页面上提供的fastrand
库,当用于一次生成一个随机数时,该库工作良好。比如说,
#pip install fastrand==1.2.4
import fastrand
print(fastrand.pcg32bounded(1001))
975
但是,我希望在numpy数组中使用此方法为某些索引生成多个数字,其中上界是相应索引中存在的数字。假设我有一个2乘5的numpy数组
import fastrand
arr = np.array([[8, 7, 4, 9, 9], [9, 9, 9, 7, 9]])
print(arr,"\n")
[[8 7 4 9 9]
[9 9 9 7 7]]
现在,我用随机数减去第二行的前两个数。我可以通过如下所示使用np.random.randint
轻松做到这一点
arr[1,:2]-= np.random.randint(arr[1,:2])
print(arr)
[[8 7 4 9 9]
[4 1 9 7 7]]
我的目标是使用fastrand
而不是np.random.randint
来提高性能。这有可能吗
编辑:第二个注意事项是,另一个问题是如何在生成的随机数上设置下限。不过,如果需要的话,我可以把这个问题作为一个新的帖子来问
我不打算导入
fastrand
,但我认为这个函数模拟了它的动作。我不确定终点的调整。在这里,我假设所需的范围是[0,n],而不是像numpy
那样包括端点可以将其替换为您的初始列表理解:
正如我在评论中所说的,您也可以通过一次调用生成所有随机数。对于小数组,它可能会慢一些,但它应该可以更好地扩展。但您必须自己进行时间测试
具有数组上限的
randint
是:对于标量随机整数生成器,您必须像以前一样使用列表理解。这里是1d:
同样,在迭代代码和较慢的
numpy
设置之间存在权衡相关问题 更多 >
编程相关推荐