tri*_*ook 5 python performance numpy
我需要创建一个10,000 x 50的数组,其中每行包含1到365之间的递增系列随机数,如下所示:
[[ 4 11 14 ..., 355 360 364]
[ 2 13 15 ..., 356 361 361]
[ 4 12 18 ..., 356 361 365]
...,
[ 6 9 17 ..., 356 362 364]
[ 1 10 19 ..., 352 357 360]
[ 1 9 17 ..., 356 358 364]]
Run Code Online (Sandbox Code Playgroud)
我想通过迭代器来解决这个问题的唯一方法:
sample_dates = np.array([np.sort(np.random.choice(365, 50, replace=False)) for _ in range(10000)])
Run Code Online (Sandbox Code Playgroud)
哪个有效,但速度相当慢(运行时间约为0.33秒),而且我将要这样做数千次).有没有更快的方法来实现这一目标?
编辑:据我所知,这个解决方案中最昂贵的部分是迭代和对np.random.choice的10k个别调用,而不是排序
一种可能的优化是将sort其放在循环之外进行矢量化:
sample_dates = np.sort([np.random.choice(365, 50, replace=False) for _ in range(10000)], axis=1)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
789 次 |
| 最近记录: |