我的目标是在Python中生成一个大型2D数组,其中每个数字均为0或1。为此,我创建了一个嵌套的for循环,如下所示:
for count in range(0,300):
block = numpy.zeros((8,300000))
for a in range(0,8):
for b in range(0,300000):
block[a][b] = numpy.random.choice(2,1, p=[0.9,0.1])
该区块有90%的机会选择“ 0”,而有10%的机会选择“ 1”。但是外部for循环处理一次需要1分钟以上的时间。有没有一种更有效的方法可以为大量数组选择随机数,同时又能够使用“ P”值? (这是我的第一篇文章,对不起,如果格式损坏的话)
答案 0 :(得分:3)
NumPy的思想是在Python级别上 not 循环遍历720000000次迭代。您应该使用全数组操作,例如让numpy.random.choice
在一个调用中生成整个选项数组:
block = numpy.random.choice(2, size=(8, 300000), p=[0.9, 0.1])
这几乎立即完成。