gpt4 book ai didi

python - 为什么 scipys stats.bernoulli.rvs 生成一个 dtype int32 的数组?

转载 作者:太空宇宙 更新时间:2023-11-03 14:30:27 26 4
gpt4 key购买 nike

我想知道为什么scipy的随机变量类stats.bernoulli产生以dtype int32作为样本的ndarrays:

 > stats.bernoulli.rvs(0.3, size=10)
array([0, 1, 0, 1, 0, 1, 0, 0, 0, 1]
> stats.bernoulli.rvs(0.3, size=10).dtype
dtype('int32')

对二进制结果使用 32 位整数值似乎效率极低。我期望的数据类型为 np.boolnp.int8

有谁知道决定生成 int32 数组作为示例的原因吗?

备注:我正在处理大 (10^8) 样本。奇怪的是,转换为 int8 并没有给我带来任何更好的性能,无论是创建数组还是对数组进行计算函数。也许是因为我的 CPU 只能处理 32 位/64 位 block ...

最佳答案

在我的系统上它是int64,所以是的,它只是一个默认的整数大小。为什么不是你说的bool。在源代码中,它使用返回整数的scipy.hypergeom。我能想到的唯一方法是使用 dtype=np.bool 预初始化输出数组(如果可以的话)。然后,尽管您在生成 stats.bernoulli.rvs 时仍然会浪费一些内存,但您可以在之后立即将其清除。

关于python - 为什么 scipys stats.bernoulli.rvs 生成一个 dtype int32 的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47346272/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com