可能的随机.u正态当尺寸太大时会有虫子

2024-03-29 09:47:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我对我从numpy.random.multivariate_normal得到的答案感到困惑:

我有一个50行的文件(mean1 mean2 standard\u dev1 standard\u dev2),我想在这个概率分布中生成大量的随机点。你知道吗

下面是我正在使用的代码片段:

data = np.loadtxt(usefile)

# calculate average and standard deviation
gauss_vals = np.array([])

N = 100

for i in range(len(data)):
    mean = (data[:,0][i], data[:,2][i])
    cov = [[(data[:,1][i]**2), 0], [0, (data[:,3][i]**2)]]
    dat_gauss = np.random.multivariate_normal(mean, cov, (N,1))
    output_outfile.write(str(dat_gauss) + '\n')
# END

当N=100(或更少)时,代码工作并生成正确的行数。但是,当N增加到100以上(比如说1000)时,代码就完成了,但只生成300行,infile中每行6行。你知道吗

这是内存问题还是random.multivariate_normal中的bug,如何生成此代码,使N=1000000?你知道吗

谢谢你

帕迪


Tags: 文件答案代码numpydatanprandommean
1条回答
网友
1楼 · 发布于 2024-03-29 09:47:00

问题一定来自str(dat_gauss)如果你有一个足够大的数组,str(np.array)的结果会是

[[ 0.87660572 -2.36172246]
 [ 1.96780972  8.49576542]
 [ 2.25980567  1.25293228]
 ...
 [ 2.30964954 -8.08709668]
 [ 1.41874824  8.53223703]
 [ 1.13222461  8.97437442]]

因此,必须显式地将数据的每个项写入文件或numpy.savetxthttps://docs.scipy.org/doc/numpy-1.14.0/reference/generated/numpy.savetxt.html

相关问题 更多 >