python - 快速生成大规模随机ndarray的方法

我想生成一个形状为 (1e7, 800) 的随机矩阵。但我发现 numpy.random.rand() 在这种规模下变得非常慢。有没有更快的方法?

最佳答案

一个简单的方法是使用 Numba 编写一个多线程实现:

import numba as nb
import random

@nb.njit('float64[:,:](int_, int_)', parallel=True)
def genRandom(n, m):
    res = np.empty((n, m))

    # Parallel loop
    for i in nb.prange(n):
        for j in range(m):
            res[i, j] = np.random.rand()

    return res

这比我的 6 核机器上的 np.random.rand()6.4 倍

请注意,使用 32 位 float 可能有助于加快计算速度,但精度会降低。

https://stackoverflow.com/questions/70434025/

相关文章:

r - 计算数据框中给定变量的均值和标准差

nuget - nuget 的 GitHub Packages 服务身份验证问题

r - 将分区文件夹列转换为变量

c++ - 如何使用美元/欧元符号登录代码来初始化变量?

r - 构建组中所有值的列表并应用于整个组

python - 压缩文件 : Check for correct Password

go - Golang 中的全局变量

google-cloud-platform - 关于 Google Cloud Pub/Sub 消息

reactjs - 为什么 npm uninstall -g create-react-app 失败

android - 在 Jetpack Compose 中调用分页数据的刷新方法无法正常工作