Python 为什么scipys stats.bernoulli.rvs生成一个数据类型为int32的数组?

Python 为什么scipys stats.bernoulli.rvs生成一个数据类型为int32的数组?,python,numpy,scipy,Python,Numpy,Scipy,我想知道为什么scipys随机变量类stats.bernoulli会生成数据类型为int32的数组作为示例: > 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.bool或np.int8 有人知道决定生成i

我想知道为什么
scipy
s随机变量类
stats.bernoulli
会生成数据类型为
int32
的数组作为示例:

 > 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.bool
np.int8

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


备注:我正在处理大样本(10^8)。奇怪的是,转换到
int8
并没有给我带来更好的性能,无论是创建数组还是数组上的计算函数。可能是因为我的CPU可以处理32位/64位块…

在我的系统上,它是
int64
,所以是的,它只是一个默认的整数大小。为什么你不这么说呢。在源代码中,它使用返回整数的
scipy.hypergeom

我能想到的唯一方法是使用
dtype=np.bool
预先初始化输出数组,如果可以的话。然后,尽管在生成
stats.bernoulli.rvs
时仍会浪费一些内存,但您可以在之后立即清除它。

它可能使用
int
数据类型
numpy
默认值。这将取决于您的系统。在大多数*nix版本中,我认为64位体系结构会得到64位整数,32位体系结构会得到32位整数。我相信在Windows上,无论架构如何,默认值都是32。在我的64位Mac笔记本电脑上,我得到了64位
int
。所以无论
np.int.
返回什么。