Использование массива NumPy в качестве тестовых случаев для зацикленного Монте-Карло - PullRequest
0 голосов
/ 26 сентября 2019

У меня есть, я уверен, очень простая проблема, которую я могу решить, но я не могу понять ее правильно и не смог найти ответ, вероятно, потому что я использую неправильный словарь и т. Д.

Моя цель - получить массив с именем array_1, который имеет разные «контрольные примеры».Для каждого из элементов этого массива я хочу запустить метод Монте-Карло, причем текущий элемент является входом для функции.Я хотел бы получить среднее значение всех результатов (num_samples) и сохранить его в другом массиве, который будет массивом «средств», которые будут легко визуализироваться.Жесткое кодирование для каждого из условий легко, но я ищу более автоматизированный метод.Любая помощь будет оценена.В данный момент я работаю с:

import numpy as np

num_samples = 5
array_1 = ([1,2,3])
array_2 = np.zeros(num_samples)
array_3 = ([])



def func_add(a, b):
    return a + b + 2
#def func_append(c):

for j in array_1:
    for i in range(num_samples):
        r = np.random.randint(1,2)
        array_2[i] = func_add( j, r)
        c = np.mean(array_2) #this value I want to put in a new array to have an 'array of means'
        #print(b)
    array_3 = np.append(array_3, c)

print(array_2)
print(np.mean(array_2))
print(c)
print(array_3)

, который возвращает:

[6. 6. 6. 6. 6.]
6.0
6.0
[4. 5. 6.]

РЕДАКТИРОВАТЬ 2: результаты для array_3, кажется, имеют смысл, но теперь мне интереснопочему array_2 содержит только 6.В первом случае циклов j = 1 и r = 1, поэтому функция должна возвращать 4 и помещать ее в индекс 1 для array_2, или все они будут перезаписаны последним случаем цикла for, что также приведет ксмысл я думаю.

Заранее спасибо.

РЕДАКТИРОВАТЬ: Я думаю, проблема в том, что, возможно, я извлекаю значение из массива_1, но я хочу поместить среднее значение от обработки впервый индекс некоторого массива (имеется в виду, что мне может понадобиться создать третий массив для хранения этих значений?)

1 Ответ

0 голосов
/ 26 сентября 2019

Вне цикла вы можете создать экземпляр c в виде пустого массива.Внутри цикла for вы добавляете среднее значение к концу c:

 np.append(c, np.mean(array_2))

Таким образом, массив c увеличивается с каждой итерацией, пока не будет содержать все результаты.

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