我对从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?
谢谢
稻米
答案 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