Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在浮动32/16中生成正常随机数_Python_Random_Numpy_Scipy - Fatal编程技术网

Python 在浮动32/16中生成正常随机数

Python 在浮动32/16中生成正常随机数,python,random,numpy,scipy,Python,Random,Numpy,Scipy,在Numpy/Scipy中,如何从具有指定(浮点)dtype的正态分布生成随机数?在我的情况下,我需要float32和float16 由于数组非常大,我不希望在采样后转换数组 例如: a = np.random.normal(1e7).astype('float16') 做这项工作,但由于它需要一个临时的float64数组,它使用的RAM是直接float16采样的4倍。我不知道numpy或scipy中有哪种随机数生成器可以在本机生成16或32位浮点 为了避免较大的临时值,可以成批生成值。例如,

在Numpy/Scipy中,如何从具有指定(浮点)
dtype
的正态分布生成随机数?在我的情况下,我需要
float32
float16

由于数组非常大,我不希望在采样后转换数组

例如:

a = np.random.normal(1e7).astype('float16')

做这项工作,但由于它需要一个临时的float64数组,它使用的RAM是直接
float16
采样的4倍。

我不知道numpy或scipy中有哪种随机数生成器可以在本机生成16或32位浮点

为了避免较大的临时值,可以成批生成值。例如,下面创建了一个10000000个
float16
值样本的数组

In [125]: n = 10000000  # Number of samples to generate

In [126]: k = 10000     # Batch size

In [127]: a = np.empty(n, dtype=np.float16)

In [128]: for i in range(0, n, k):
   .....:     a[i:i+k] = np.random.normal(loc=0, scale=1, size=k)
   .....:

我接受这个答案,因为精确的就地操作是不可能的,这个解决方案是在不使用太多RAM的情况下生成一个大的随机数数组的最佳方法。