python - 在 Python 中使用 numpy.random.choice 的更快替代方案?
问题描述
我的目标是在 Python 中生成一个大型二维数组,其中每个数字都是 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”值?(这是我的第一篇文章,如果格式损坏,请见谅)
解决方案
NumPy 背后的想法是不在Python 级别循环 720000000 次迭代。您应该使用整个数组操作,例如numpy.random.choice
在一次调用中生成整个选择数组:
block = numpy.random.choice(2, size=(8, 300000), p=[0.9, 0.1])
这几乎立即完成。
推荐阅读
- asp.net - Getting internal server error (500) in response after insert/update
- excel - Delete 2 columns based on cell value
- r - R and Export raster extent as esri shapefile
- javascript - What are the differences btwn 'load' event vs readystatechange 'complete' event?
- maven - 为什么 maven 在 exec-maven-plugin 中针对特定转储抛出错误
- function - 如何在 Julia v1.1 中编写输入多维数组的函数?
- c++ - 将 uint32_t 添加到不同命名空间中的队列时发生内存泄漏
- twitter-bootstrap - Problem generating repeated Bootstrap grid rows and columns with XSLT
- php - 警告:为 foreach() 提供的参数无效 - 我能解决这个问题吗?
- php - WordPress:如何将帖子类型循环到自定义仪表板菜单?