大小太大时可能出现random.multivariate_normal错误

时间:2018-10-01 08:50:45

标签: python numpy

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

我有一个50行(mean1 mean2 standard_dev1 standard_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中的错误,如何编写此代码,以便我可以拥有N = 1,000,000?

谢谢

稻米

1 个答案:

答案 0 :(得分:0)

如果您有足够大的数组,则问题可能来自.col-1, .col-2 { display: inline-block; width: 50%; } @media screen and (max-width: 720px) { .col-1, .col-2 { display: block; width: 100%; } } ,而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]] https://docs.scipy.org/doc/numpy-1.14.0/reference/generated/numpy.savetxt.html