возможная ошибка random.multivariate_normal, когда размер слишком велик - PullRequest
0 голосов
/ 01 октября 2018

Меня смущают ответы, которые я получаю от 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 строк, по 6 для каждой строки в infile.

Это проблема с памятью или ошибка в random.multivariate_normal, каксделать этот код, чтобы я мог иметь N = 1 000 000?

Спасибо,

Пэдди

1 Ответ

0 голосов
/ 01 октября 2018

Проблема возникает из-за 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.savetxt https://docs.scipy.org/doc/numpy-1.14.0/reference/generated/numpy.savetxt.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...