Вычисление математических функций по нескольким прогонам (Numpy)


В настоящее время я провожу серию экспериментов, которые мне нужно выполнить несколько раз, чтобы создать приличные полосы ошибок. Каждый эксперимент выводит файл, который имеет различную информацию, такую как среднее / std / пропускная способность / задержка / N-й процентиль и т. д.

Затем я построю график каждого из этих значений, но чтобы получить более осмысленный результат, мне нужно взять среднее значение всех этих файлов для каждой ячейки и построить его со стандартным отклонением, полученным в виде баров ошибок.

Код, который у меня есть до сих пор, однако, не работает:

 data_1 = np.loadtxt(fold + "/" +  "clients_1.txt")
 data_2 = np.loadtxt(fold + "/" +  "clients_2.txt")
 data_3 = np.loadtxt(fold + "/" +  "clients_3.txt")
 data = [data_1,data_2,data_3]
 d_avg = sum(data) / float(len(data))
 err   = np.std(d_avg)
 plt.plot(d_avg[:,19],d_avg[:,7], label='Test Plot', yerr = err[:,7] )

Ошибка, которую я получаю, такова:

IndexError: 0-d arrays can only use a single () or a list of newaxes (and a single ...) as an index

Немного запутался в том, в чем проблема. Файл d_agv печатается нормально.

Все клиентские файлы имеют одинаковое количество строк столбцов, и каждая ячейка в одном файле соответствует той же ячейке в другом файле (потенциально с различными значениями, очевидно)

Формат каждой строки в каждом файле:

1 1 50 1 1 0 100 11.30000 9.00000 50.00000 32.09000 5.66480 9.00000 9.00000 10.00000 11.00000 12.00000 13.55000 32.85000 39.47368 

И таких строк несколько.

1   2   2013-08-22 12:12:44

1 ответ:

Итак, если я вас хорошо понял, вы хотите получить среднее и стандартное отклонение по всем прогонам эксперимента. Если бы, например, у нас было 2 прогона с некоторыми случайными данными, приведенными в таблицах вниз, среднее значение было бы:

run 1   run 2       mean

1 2 3   1 3 2    1  2.5 2.5
4 5 6   5 4 6   4.5 4.5  6
7 8 9   7 8 9    7   8   9

Если мое предположение верно, это код, который вы хотите:

data_1 = np.loadtxt(fold + "/" +  "clients_1.txt")
data_2 = np.loadtxt(fold + "/" +  "clients_2.txt")
data_3 = np.loadtxt(fold + "/" +  "clients_3.txt")

data = np.array([data_1, data_2, data_3])
data_avg = data.mean(axis=0)
data_err = data.std(axis=0)
plt.plot(data_avg[:,19], data_avg[:,7], label='Test Plot')